Transcript Document

Welcome to CIS 2168 !
(formerly:CIS 68)
Software Design, Data Structures and
Algorithms
Instructor: Rolf Lakaemper
TA: Jingting Zeng (Nikki)
CIS 068
Introduction
• Who am I ?
• What‘s this course about ?
CIS 068
Who am i ?
Rolf Lakaemper
• PhD in applied mathematics in
Hamburg, Germany
• Assistant professor at CIS since 2003
• Research topic: Image Processing,
Computer Vision and Robotics
• before 2003: Software Development
Director of different companies (Computer
Games, Voice + Video over IP)
CIS 068
Topics of CIS 068
• Software Theory:
– A look at modern techniques of industrial
software development
• Software Practice:
– Consolidation of Object-Oriented
Programming (OOP) techniques in JAVA
• Software Analysis
– Fundamental data structures, algorithms and
their performance
CIS 068
Software Theory
Software Engineering and OOD:
Different views of software
The software lifecycle
Diagrams, Use Cases,...
CIS 068
Software Theory
Correctness:
• Syntax errors
print (“hello world;
• Runtime errors
ERROR !
Division by zero error at
0000ff:03f4 (->00f4:3aa7)
af 000
bc 3ef4
hl 988f
de 45db
• Logical Errors
M:={0..255}
n iM => n+1 i M
CIS 068
Software Theory
Principles of OOP:
– Inheritance, class hierarchies,
polymorphism,abstract and interface
classes,…
abstract class
class1
interface1
interface2
class2
class1_1
CIS 068
Software Practice
OOP in JAVA:
GUIs
CIS 068
Software Practice
OOP in JAVA: Recursion
CIS 068
Software Practice
We will use JAVA as an example for a
modern, object oriented language.
The topics of this class are not (too)
JAVA specific, although all
programming is done in JAVA.
CIS 068
Software Analysis
• Fundamental Algorithms
Sorting: Bubble-, Insertion-, Merge-, Quicksort
A,H,D,O,P,C,C,J
A,C,C,D,H,J,O,P
O(n log n)
Efficiency
CIS 068
Software Analysis
Fundamental Datastructures
Stacks
Queues
Trees
CIS 068
Textbook
• Course will be close to this book:
– Koffman & Wolfgang: Objects,
Abstraction, Data Structures and Design
using JAVA, Version 5.0
(Wiley, 2005)
CIS 068
Class Schedule
• Class meets
– Monday 1:40 – 2:30, Tuttleman TL 1B
– Wednesday 12:40 – 2:30, Wachman 104
(LAB)
– Friday 12:40 – 2:30, Tuttleman 1B
• Friday classes will include a Mini Quiz
• Wednesday will be in the lab where
you will do a programming exercise
designed to reinforce the (previous)
week’s topic.
CIS 068
Exams and Quizzes
• There will be weekly quizzes given on
Wednesday. These will count 15% of
your grade.
• There’ll be extra points during class,
counting as mini quiz points
• There will be one mid-term
examination: 20%
• There will be a final examination: 30%
• Lab assignment grades will count
35%
CIS 068
Exams and Quizzes
• There will be weekly quizzes given on
Wednesday. These will count 15% of
your grade.
• There’ll be extra points during class,
counting as mini quiz points
• There will be one mid-term
examination: 20%
• There will be a final examination: 30%
• Lab assignment grades will count
35%
CIS 068
Lab Assignments
• There will be weekly lab assignments.
• The labs will count 35% of your final
grade.
• The assignments are usually 1 week
assignments, sometimes 2 weeks for
the less small ones.
• The assignments will be closely
connected to the class content.
Working on them will show you if you
really understood the topic.
CIS 068
Lab Grades
• Labs will be graded as follows:
– On time: max.10
– Late, max: 6
• The TA and Instructor are here to help
you. Do not wait until the last minute if
you are stuck !
CIS 068
Policy on Cheating
Programming must be learned by
doing it !
• Copying another student’s program
deprives you of that learning opportunity.
• If a lab assignment is found to be a copy,
both students will receive a –10 for that
assignment.
• If more than one program is found to be a
copy, the students involved will receive an
F for the course.
CIS 068
Any Questions ?
Rolf Lakaemper
Office:
Room 313, Wachman Hall
E-mail: [email protected]
Phone: (215)-204-7996
Office Hours:
Monday after class, 3 – 4:30pm
Friday 3 – 4:30
Or just come in whenever.
All this can be found on my website:
http://knight.cis.temple.edu/~lakaemper
CIS 068