Clarkson University
CS 141: Introduction to Computer Science I
Course Syllabus -- Fall 2004

Website: http://www.clarkson.edu/class/cs141

Professor: William Hesse
Office: Science Center 383
Phone: 268-2387
Email: whesse@clarkson.edu

Office hours:
Monday 9:00-11:00
Tuesday 12:00-2:00
Wednesday 2:00-3:00
Friday 10:00-12:00
Or by appointment

Teaching Assistant: Jason Herne
Office: ITL lab (SC 334)
Email: hernejj@clarkson.edu

TA's Office Hours: Wednesday
Monday 10:00 - 12:00
10:00 - 12:00

Course Objectives:

  1. Students will learn the funamentals of structured programming in C++.
  2. Students will learn and practice good program design techniques and programming style, resulting in programs which are correct, reliable, robust, efficient, and maintainable.
  3. In addition to the basics of computer programming , students will be introduced to fundamental ideas of computer science.

Textbook: "Problem Solving with C++: The Object of Programming (4th ed.)",
by Walter Savitch, Addison-Wesley.

SYLLABUS
CHAPTER TOPIC
1 Introduction
2 Simple Programs
2 If Statements
3 Functions
4 More about functions
5 File Input/Output
7 Loops
6 Structures
10 Arrays
10 Strings
11 Strings, C Strings, and the Vector class

GRADING The grading in this class has three parts. The first part is a numerical score, based on all components of the course. Labs, assignments, and tests will be curved at the time they are graded, and there will be no curve applied to the final class averages. The components are weighted according to this table:

The second part of the grading is a requirement for advanced work in order to receive a grade of B+ or A. The programming assignments will have advanced versions that students can do instead. Students must do the advanced versions of 3 out of 8 assignments to be eligible for a B+, and the advanced versions of 6 out of 8 assignments to be eligible for an A. This is so that the standard versions of the programming assignments can be at a level that all students can master, but so that the best students can work on more challenging problems.

The third part of the grading is a minimum requirement on the final. Students must have a (curved) score of 45 or greater on the final to pass the course.

Exams: You are responsible for all material in the lecture, as well as the reading assignments. Most important topics from the reading assignments will be reviewed in lecture. Check Fall '03 Exams and Old Exams for old exams to study from.

Labs: The computer laboratory periods are scheduled every Tuesday, in the Internet 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.

Some of the labs are too long to get done during the lab period. Therefore, lab assignments do not need to be turned in until Monday of the following week, by the beginning of lecture. Late work will be subject to a 25% penalty each week. Turn in labs to the digital dropbox on Blackboard, or as instructed by the TA

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 come to Professor Hesse's office hours as well, if you have any questions about the material, assignments, or want to chat about computers and computer science.

Programs: In addition to the labs, there will also be additional programs assigned in class. These programming assignments will require more thinking than the labs. Programs will be assigned in class and due in class two or three weeks later. Programs must be turned in by Midnight on the day they are due. Programming assignments will be corrected, and returned.

Many of these programming assignments will be designated as group projects, which must be completed by a team of 2 or 3 students. All students are responsible for completing and turning in the project on time, and should have mastered all the skills and ideas used in the project - they should be able to solve similar problems in an exam setting, based on what they have learned while doing the assignment. The best way to make sure all students are participating is the "one student talks, one student types" rule. The person deciding what to type and how to write the code should tell the student typing in the code what to type, and explain why.

Students' programs must compile, run, and produce the correct output to receive full credit. If they do not run and produce the correct output, they will receive a grade of at most 80%. Partial credit up to that limit will be given based on the correctness of the program.

Because half of the work of writing a program is debugging that program (finding and removing errors from it), make sure to start your programs early. You may also then send me your programs and ask questions about them, and receive answers in time to fix your programs.

Because a large part of learning to program is learning about common errors, and how to avoid them, I will use examples from students' programs in lecture. Students' names will be removed, so they cannot be identified. If you don't wish your code to be used this way, let me know.

Late Policy: With computers, everything that can go wrong will go wrong at the last minute. Therefore, it is absolutely necessary that you begin your assignments early. My suggestions are as follows: Start the assignment as soon as possible, so you will immediately realize if there is something you don't know. If you have problems finishing it on that day, you will have more time to fix any problems. Please follow my suggestions. If you don't, I can guarantee trouble. If you fall behind, it will be difficult to dig yourself out. Late work is subject to a penalty of 25% per week.

Attendance: Attendance is required and will be taken in this class. This will constitute the major part of the class participation score, so that each class missed takes away 1/4 of 1% of your final grade. Verbal excuses will be accepted for at most two absences, otherwise written notices are needed. Part of attendance is having completed the required reading for the class. Therefore, attendance will be taken by having students submit a question about the required reading on a 3x5 index card at the beginning of each class.

Academic integrity: Labs for this class must be done individually. All the help you need to complete a lab must be gotten from the lab instructor or professor. Programming assignments may be discussed with other students. However, do not look at other students' code until you have written that section of code yourself. At that point, you may discuss your code and correct each other's errors. Feel free to discuss the assignments and strategies for solving them (algorithms), but write the code yourself. The exact rules for "doing it yourself" are:

There are many ways to write any program, and so two students submitting essentially identical code will be suspected of academic dishonesty. A good way to show that your program is your own work is to save intermediate versions of the program as you work, with file names like "program1version1.cpp", "program1version2.cpp", and so on.

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). So, if you are having trouble writing a function, don't copy the function from your friend. If you do, that will be considered cheating. In addition, you will not learn it, and will do badly on the tests. Instead, ask your friend (or somebody else) to explain to you what you need to know to write the function. Then write it yourself.

All of these rules apply to individual programming assignments, not to group assignments. They apply to group assignments only with regards to getting help from outside the group.

I take cheating seriously. Cheating on tests, labs, or assignments will result in a grade reduction or failing grade for the course, and notification of the academic integrity board.

If you find yourself getting behind, please see the course instructor. We can work together to get you back on schedule. Besides learning programming in C++, you should also be practicing good study habits, time management, and other learning skills in this class.

Author: William Hesse
Last Modified: Aug 25, 2004