CS 141: Introduction to Computer Science I
Course Syllabus -- Spring 1998

Professor: C. Lynch
Office: 371 Science Center
Phone: 268-2384
E-mail: clynch@sun.mcs.clarkson.edu

Office Hours: M,W 9:00-10:00 and 11-12:00; F 9:00-10:00 a.m. and by appointment

Teaching Assistant: Dwight Tuinstra, Science Center 381, phone: 268-3866, email: tuinstra@sun.mcs, office hours: to be announced.

Text: Problem Solving with C++: The Object of Programming by Walter Savitch (Addison-Wesley, 1996).

Course Objectives:

  1. Students should learn fundamental principles of how to solve problems through computer programming. The programming techniques will include good program design practices and programming style, resulting in programs which are correct, reliable, robust, efficient, and maintainable.
  2. Students should learn basic features of the programming language C++.
Exams: Tentative dates for Exam 1 and 2 are: 3/4, 4/8.

Grading Policy:

Exam 1 15%
Exam 2 20%
Final Exam 25%
Labs 20%
Programs 20%

You are responsible for all material in the lecture, as well as any reading assignments where I specify you are responsible. Class participation is encouraged!

Computer Laboratory: The computer laboratory periods are scheduled on each Tuesday in the PC lab on the third floor of the Science Center. These labs are an essential part of the course. It is important to come prepared for each lab, having looked through the assignment and remembering to bring all necessary materials.

Lab assignments will be passed in one week later in the next lab session. In addition to the scheduled labs, the TA will have office hours, where he will help you complete your lab assignments, answer questions about the course, help with homework, and so on. You may come in anytime during the office hours, at your convenience. This gives you the opportunity to finish your lab work under the supervision of the TA.

Please hand in labs and programs on time. If you hand in a lab or a program late, the penalty will be 5 points per day the first week it is late, and 10 points per day the second week. Nothing will be accepted after the last day of class. I would rather have you turn in a late assignment with a working program, than an on-time assignment with a non-working program. So please come to me if you are having problems with your program and cannot turn it in on time. An extension may be granted if you ask in advance, as long as you do not ask too often.

Academic integrity: ALL assignments for this course are expected to be INDIVIDUAL efforts. That is, although you may feel free to discuss the assignments and strategies for solving them, you must write up your programs, labs and problem sets on your own. Some well-meaning students, in the process of "helping" a friend, wind up essentially doing the assignment for the friend. Not only is this not allowed, but you are really doing your friend a disservice. Programming is learned by doing it yourself.

You are encouraged to learn from each other and help each other understand Computer Science. Teach each other and exchange ideas, but be ethical -- don't copy or modify a program which isn't yours (or allow another student to write or debug your programs for you).

If you find yourself getting behind, please see the course instructor. We can work together to get you back on schedule. Resist the temptation to copy another's work. The penalty for the first offense will be a 0 for the assignment. A second offense will result in notification to the academic integrity board. For tests, any cheating will result in an immediate notification to the academic integrity board.

From time to time, I may conduct interviews with students to ask them to explain to me their programs. If a student cannot explain the program, then the grade will be reduced. The rationale behind this policy is that people who do their own work are able to explain what they did.




==============================================================================

                         TENTATIVE COURSE OUTLINE

------------------------------------------------------------------------------

Week    Topics                                  Reading Assignments

------------------------------------------------------------------------------

1.      Introduction                            Chapter 1

1/21    Clarkson Computing Facilities

        Borland C++

        Algorithm Design

        Basics of Computer Science

------------------------------------------------------------------------------

2.      Simple Programs                         Chapter 2

1/26    Variables and Assignments

        Input and Output

        Data Types and Expressions

------------------------------------------------------------------------------

3.      Flow of Control                         Chapter 2

2/2     If statements

        While loops

        Program Style

------------------------------------------------------------------------------

4.      Functions and Abstraction               Chapter 3

2/9     Predefined Functions                                   

        Programmer-Defined Functions

        Procedural Abstraction

        Local Variables

        Overloading Function Names

------------------------------------------------------------------------------

5.      More about Functions                    Chapter 4

2/16    void Functions

        call-by-Reference Parameters

        Using Procedural Abstraction

        Testing and Debugging Functions

------------------------------------------------------------------------------

6.      More Flow of Control                    Chapter 7

2/23    Using Logical Expressions

        Multiway Branches

        for Loops

        Designing Loops

------------------------------------------------------------------------------

7.      Arrays                                  Chapter 9

3/2     Arrays in Functions

        Programming with Arrays

------------------------------------------------------------------------------

8.      Strings                                 Chapter 10

3/9                                                         

------------------------------------------------------------------------------

3/16 - 3/20     ***  Spring Break  ***

------------------------------------------------------------------------------

9.      Introduction to Classes                 Chapter 5

3/23    I/O Streams

        End of File

        Character I/O

------------------------------------------------------------------------------

10.     Classes and Abstract Data Types         Chapter 6

3/30    Structures

        Classes

        Abstract Data Types

------------------------------------------------------------------------------

11.     Tools for Designing ADTs                Chapter 8

4/6

------------------------------------------------------------------------------

12.     Pointers and Dynamic Arrays             Chapter 11

4/13    Pointers

        Dynmanic Arrays

        Classes and Dynamic Arrays

------------------------------------------------------------------------------

13.     Pointers and Linked Lists               Chapter 14

4/20                                                           

------------------------------------------------------------------------------

14.     Recursion                               Chapter 13

4/27

------------------------------------------------------------------------------


Last modified: 20 January 1998
clynch@sun.mcs.clarkson.edu