Computer Science 161 C
Introduction to Computer Science
8:00 - 8::50 MTThF,
Savitch, Walter J; Problem Solving with C++,
Addison-Wesley, 1999. We will cover chapters 1 - 14, possibly skiping
parts of chapters 11, 13, and 14. In addition there may be a number
of handouts distributed throughout the term.
- Bob Matthews (email: firstname.lastname@example.org)
- Thompson 502 (In the Thompson Hall Tower)
- Extension 3561
Office hours (tentative):
- 11:00 - 11:50 AM MWF
- Or by appointment.
Office hours are times that you can expect me to be available on a
drop-in basis. I usually have obligations 8:00 - 1:00 and 3:00 - 4:00
most days except Wednesday (including office hours). If you find me
free at some other time, please feel free to drop in. If you have a
problem that may take some time, or if my office hours are not
convenient for you, we can arrange an appointment to meet at some
other time. Messages sent via email are welcome, and can be used to
ask a question or to set up an appointment.
- Two - three hour exams + a comprehensive final: 60 - 70% (The
final exam will have the weight of two hour exams)
- Written and programming exercises: 30 - 40%
Programming exercises will be graded on style and documentation as
well as correctness. Programs must include header documentation as
well as adequate internal documentation unless otherwise specified.
Late assignments will be accepted (with an increasing penalty) until
the graded exercise is returned to the class. All assignments turned
in must represent individual effort: work done by a committee cannot
be accepted except where a group effort is a clearly stated part of
the assignment. All students in Computer Science classes at the
University of Puget Sound are responsible for the material contained
in the document on academic honesty published by the Department of
Mathematics and Computer Science and included in the Academic
A minimum grade of 50% on exams and 50% on homework assignments is a
necessary (but not necessarily sufficient) condition for a passing
Finally, the last date for withdrawing from this class with an
automatic W is Monday, Feb. 15 In the event that we do not have an
hour exam before that date, I will assign a WP grade to any formal
withdrawals (i.e., completed using the necessary form and submitted
to the register's office) up to a week after the day that the first
hour exam is returned to the class. Of course, should you find
yourself in difficulty at any point in the semester, please make
arrangements to meet with me as quickly as possible.
COMPUTER SCIENCE 161
INTRODUCTION TO COMPUTER SCIENCE
A. Catalog Description
Introduction to computer programming in C++. The course emphasizes
the use of the computer as a problem solving tool and the development
of good programming style. The course is offered as a service course
for students in business, mathematics, and science, and is the
introductory course for students planning to major or minor in
computer science. Students planning on taking further courses in
computer science should select this course.
- Service Course - CSci 161 satisfies the quantitative reasoning
requirement within the University's core curriculum. CSci 161 is
designed to teach programming while emphasizing analysis and
problem solving, enabling the student to write software in support
of a variety of majors including those within the sciences,
mathematics and business.
- First Course for Computer Science Majors - CSci 161 meets the
objectives for a first course in computer programming as specified
in ACM "CURRICULUM 78." These objectives include the introduction
of problem solving methods and algorithm development; the teaching
of a high-level language that is widely used (Pascal is currently
one of the most popular computer languages), and to teach how to
design, code, debug and document programs using techniques of good
To take CSci 161, a student would be expected to have certain minimal
quantitative skills. Three years of high school mathematics, Math 111
or its equivalent with a grade of C- or better is required for
admission into CSci 161.
II. Required Topics
The following outline represents the "core" material for a CSci 161
course. Each course should cover, at a minimum, these topics.
- Computer Organization
- An overview identifying components and their functions,
including main and auxiliary memory.
- A brief introduction to the language of a machine.
- An overview of an operating system.
- Problem-solving and Algorithm Development
- Problem analysis.
- Design principles: stepwise refinement, basic control
structures and structured programming principles.
- Testing techniques.
- Programming Techniques
- Data-types; constants and variables including integers,
reals, Booleans and characters.
- Programming calculations; assignment statements,
expressions, operations and standard functions.
- Binary arithmetic; internal data representation for reals,
integers, and characters.
- Input-output including formatted output.
- Control structures; sequence, selection, looping (FOR,
- Procedures, functions, argument transmission and recursion.
- Non-standard data types and data structures including
records, arrays, and text files.
- Sorting and searching.
III. Optional Topics
- Simulation and games.
- Packed arrays, variant records and sets.
- Non-text files, file buffers, GET and PUT.
Students should be held responsible for each topic in the "core".
To implement this, each topic should either be the subject of at
least one programming exercise or appear on an examination or
The list of additional topics are just suggestions. Additional
material covered should depend upon the interests of the instructor,
class, and the amount of time available.
CSci 161 A Lecture Schedule
- This should be considered very much a document in development.
While I will try as much as possible to stick to the posted exam
dates, the schedule of lectures and homework may change as the
term progresses. Updates, and detailed weekly plans, will be
my home page.
- Please note that reading assignments for an individual lecture
should be completed before the lecture. Readings may include
handouts to be provided, and may also include readings in books on
- We will progress at (roughly) the rate of one section / day.
I will try very hard to adhere to the following exam schedule. If it
becomes necessary to change the date of an exam (except, of course,
the final exam over which I have no control), I will give the class
advance notice, and work to make arrangements for students who can
not take the exam on the changed date.
The date and time of the final exam is fixed by the Registrar. Should
the date and time I have for this exam conflict with the announced
schedule, the Registrar's schedule will apply.
- Exam 1: Friday, Feb. 12
- Exam 2: Friday, Mar. 26
- Exam 3: Friday, April 30 (Please note that this is in
the last full week of classes.)
- The Final Exam for this class will be at 4:00 PM Friday, May
- Week 1 (Monday, Jan. 18)
- Topics: Introduction to the course
- Reading: Chapter 1
- Week 2 (Monday, Jan 25)
- Topics: Programming and language basics
- Reading: Chapter 2
- Week 3 (Monday, Feb. 1)
- Topics: Top-down design and procedures
- Reading: Chapters 2,3
- Week 4 (Monday, Feb. 8)
- Topics: Procedures and functions
- Reading: Chapter 3
- Other Notes: The first hour exam will be on Friday, Feb.
- Week 5 (Monday, Feb. 15)
- Topics: Functions
- Reading: Chapter 4
- Other Notes: Monday is the last day to drop with an
- Week 6 (Monday, Feb. 22)
- Topics: IO Strings
- Reading: Chapter 5
- Week 7 (Monday, Mar. 1 - Happy St. David's Day!)
- Topics: Abstract Data Types
- Reading: Chapter 6
- Week 8 (Monday, Mar. 8)
- Topics: Structured programming and further control
- Reading: Chapter 7
- Other Notes: Friday is midterm (the date, not an exam in
- Week 9 (Monday, Mar 15)
- Spring Break! (no classes)
- Week 10 (Monday, Mar. 22)
- Topics: More on Abstract Data Types
- Reading: Chapter 8
- Other Notes: Second hour exam is Friday, Mar. 26.
- Week 11 (Monday, Mar 29)
- Topics: Arrays
- Reading: Chapters 8,9
- Week 12 (Monday, April 5)
- Topics: Arrays and strings
- Reading: Chapters 9, 10
- Other Notes
- Week 13 (Monday, April 12)
- Topics: Recursion
- Reading: Chapter 12
- Other Notes: Note that we are skipping chapter 11 until
- Week 14 (Monday, April 19)
- Topics: Dynamic data structures
- Reading: Chapter 11
- Week 15 (Monday, April 26)
- Topics: Dynamic data structures
- Reading: Chapter 14
- Other Notes: The third hour exam will be held on Friday,
April 30 (please note that this is in the last full week of
- Week 16 (Monday, May 3)
- Topics: Wrap-up and review
- Reading: (possibly) Chapter 13
- Final exams Monday, May 10 - Friday, May 14
- CSci 161: Friday, May 14, 4:00 PM