Held: Friday, 27 August 2004
Summary:
We begin the course by visiting the design and central topic matter
matter of the course.
Notes:
- I had some trouble setting up the Web site and syllabus. Expect it to be ready by Monday.
Overview:
- About the course.
- Grounding ourselves.
- Some basic administrative issues.
- Programming paradigms.
- An introduction to data structures and algorithms.
- CS152 is primarily a course in Abstract Data Types and
Algorithms. At some institutions, it has that name.
- Traditionally, courses like this have focused on data structures
and algorithms.
- A data structure is a formalism for organizing and managing
data. Often, the way you organize the information in your program
permits or inhibits particular operations. Different structures
may also lead to different costs (in time or space).
- An abstract data type is a more general formalism for organizing data.
- An algorithm expresses the steps involved in completing
a task.
- CS152 is also a course in imperative and
object-oriented programming.
- Presumably, you've seen a little bit of each in CS151 (or whatever
course you've taken previously). We will certainly talk more about
both paradigms.
- We will be doing our programming in Java. In the
past, I've said that
the language we use is less important than the concepts we learn.
However, I must emphasize that you will not learn the concepts
unless you also learn Java.
- Like most computer science courses, CS152 will have both theoretical
and practical components. I hope you will enjoy relating the two.
- Before we delve too far into these issues, we should ground
ourselves somewhat by asking ourselves a few questions
(and I'll be asking these of the class).
- What is Computer Science?
- What is Computer Programming?
- How are they similar? How are they different?
- What is an algorithm?
- What is a computer program?
- We also want to ask ourselves some practical questions.
- What programming languages do we know?
- What CS or programming concepts are we least comfortable with?
- How comfortable are we with the workstations and Unix?
- Finally, I'd like you to reflect on the course.
- Why are you taking this course?
- What do you expect to get out of this class?
- Please refer to the course web site
for details.
- Teaching philosophy: I support your learning
- Policies
- Attendance: I expect you to attend every class. Let me know
when you'll miss class and why.
- Grading: I'm a hard grader. I don't grade everything.
- Course web
- Etc.
- The exams
- Three take-home exams during the semester. Plan to spend
ten hours on each one.
- An optional final to make up for a bad exam grade.
- In-class coding discussions
- This semester, I plan to give daily short assignments and then ask someone to present his or her solution to the class for discussion. You will not be warned in advance as to who will present.
- Projects
- The tradition is to do a large project
- I'll list a few possibilities: Email client, Game, Image
processing package, Four years at a glance.