CS 142: Introduction to Computer Science II
Course Syllabus -- Fall 1998

Instructor: Dwight Tuinstra

Office: 391 Science Center

Phone: 268-6496

Office Hours: TBA

e-mail: tuinstra@clarkson.edu --or-- tuinstra@northnet.org

Text: Data Abstraction and Problem Solving with C++ 2nd ed., by Carrano , Helman, Veroff

Objectives: This course has three main objectives:

  • To develop your fluency in C++.
  • To introduce you to some essential programming techniques and Computer Science conce pts.
  • To give you ways to think about programming problem analysis and solution design.
While you may consider fluency in C++ to be the main point of this course, the last two o bjectives are actually the important ones. Almost anyone with enough motivation can lear n the basics of a computer language on their own -- though taking a course can speed up t he process considerably. Using a computer language effectively and efficiently is anothe r matter, and that's what this course is about.

Homework, Testing, and Grading: To learn a programming language, you must progr am. There will be a homework assignment, including programming tasks, every one or two w eeks. Assignments are due by the beginning of class (that is, 8:00 am) on the given due date. Criteria for grading homework will be announced. Start your homework early: l ate assignments will not be accepted . If you are not finished, hand in what you hav e. The lowest homework grade for each student will be dropped. There will be two midter ms and a final. Homework, midterm, and final each contribute a third of your course tota l, though if necessary weekly quizzes may also be instituted for 10% of the final grade ( in which case the other three areas will be 30%). Attendance and quality class participa tion may help boost a borderline course grade. Grade scale:

90+ = A, 80-89=B, 70-79 = C, 60-69 = D, < 60 = F

Attendance: Optional, but you are responsible for all information, anno uncements, assignments, etc. mentioned in class. Painful as an 8:00 might be, skipping c lass is not recommended. Bring your coffee mugs and fill them up at the Concrete Cafe be fore class.

Help, Cooperation, and Academic Integrity You may discuss ideas, approaches with each other, and may assist each other with debugging already-written programs. You may take code examples from the book and adapt them (indeed, you are expected to do this). H owever, the solution that you hand in, and all other homework, must be your work and your work alone . Claiming that someone else's work is your own is a serious academ ic offense. Letting someone else copy your work is also frowned upon. First of fenses may result in loss of the assignment's (or exam's) value and a notification in you r university records. Repeat offenses can seriously damage or end your academic career.

Topics of This Course We will cover the following topics, in roughly the followi ng order.

  • Introductory Matters: software life cycle. Interfaces, specifications, "programming by contract". Invariants and program correctness. User interaction. "Fail-safe" programming. Style. Debugging.
  • Design Basics: Top-down, bottom-up, object-oriented. General design guidelines.
  • Programming Fundamentals: pointers, dynamic memory usage, linked lists, recursion. Error handling.
  • ADTs and Data Abstraction: stack, queue, tree, priority queue, table, set, multiset, "list". Implementing ADTs with classes.
  • Algorithms: kth lowest, linear and binary search, various sorting algorithms, tree t raversal. Introduction to algorithm analysis.
  • Object-Oriented Programming: rationale, problem domain modeling. Inheritance and cla ss hierarchy, overloading, static vs. dynamic binding, virtual functions, abstract base c lasses.
  • Templates: using and creating
  • Event-Based OOP and "RAD" (if time allows)