Held Monday, January 24, 2000
Today, we begin CS152 by considering the core subject matter of
the course: computer science, data structures, algorithms, and
- Make sure to complete the
for Tuesday's class! (A few students always seem to miss this.)
- At noon on Thursday, January 27 in Science 2424 I'll be giving a presentation
on summer opportunities in computing and computer science. Some
opportunities are available for non-majors, and there's a chance
that I'll take a first-year student for my research team, so
feel free to come.
- Last-minute update (after the packet was printed): My co-authors and I have
decided to rearrange Java Plus Data Structures. There will no
longer be a Chapter 3 on Object-Oriented Programming. The various list
chapters may also be combined into one.
- Another last-minute update: The dates on the long syllabus may be
incorrect. (My date generation program thought it was last year.)
- Course overview
- Definition of computer science
- Introduction to data structures and algorithms
- Introduction to programming paradigms
- CS152 is primarily a course in Data Structures and
Algorithms. At some institutions, it has that name.
- 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 algorithm expresses the steps involved in completing
- CS152 is also a course in procedural and
- Presumably, you've seen a little bit of each in CS151 (or whatever
course you've taken previously). We will certainly talk more about
- 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 (and you'll be doing
this again on the introductory survey).
- Why are you taking this course?
- What do you expect to get out of this class?
- Please refer to the course web site and
the introductory handout
- Teaching philosophy: I support your learning
- 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
- 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.
(Last semester, I didn't give a final and just dropped the lowest
exam. This semester, I'm much more likely to give the final.)
- The lab manual
- It may be available online (locally only); I'm still nego
- Using the online labs
- Yes, you must buy a copy.
- I will rarely collect labs. When I do, you can just summarize
your answers on a separate sheet of paper.
- No, I don't receive royalties.
- The book
- Under development.
- I'll hand out chapters as I write them or determine that you
need them (seven of the eleven chapters should be ready by the
start of the semester; they cover the first seven weeks of the
semester (although not in a one-to-one mapping).
- I'd appreciate comments. If you feel that you've made a
substantial contribution to the book through your comments,
let me know and I'll put you in the acknowledgements section.
- 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, PseudoVax
- Computer Scientists have developed a number of strategies for looking
at algorithm and data design, including
- procedural / imperative
- While individual definitions of each category may differ, most
definitions have some similarities.
- In CS151, you studied functional and imperative programming.
- In CS152, you will study object-oriented and imperative programming.
Monday, 17 January 2000
- Created as a blank outline.
- Filled in many of the details from
outline 1 of
- Updated selected parts during initial read-through.
Tuesday, 18 January 2000
- Added a few more notes on projects.
- Adeed notes on the lab manual and the book.
Monday, 24 January 2000
- Removed uncovered section on data structures.
On to Introduction to Java.