CS 142: Introduction to
Computer Science II
Course Syllabus -- Fall 1998
Instructor: Dwight Tuinstra
Office: 391 Science Center
Office Hours: TBA
e-mail: email@example.com --or-- firstname.lastname@example.org
Text: Data Abstraction and Problem Solving with C++ 2nd
ed., by Carrano , Helman, Veroff
Objectives: This course has three main objectives:
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.
- 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
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.
- Design Basics: Top-down, bottom-up, object-oriented. General design
- 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)