Instructor: Gang Chen
Office: Lally 9A
Email: cheng3@rpi.edu
Office Hour: Thursday 2-4 pm (or by appointment)
Course Webpage: http://www.cs.rpi.edu/~cheng3/teaching/CSCI-1190
This course (CSCI-1190) teaches the rudiments of computer programming and some of the essentials of the C programming language. Students taking this course are not expected to have any previous experience with computer programming.
Students may not take credit for this course if they take any other Computer Science course. If you desire more than an introduction to programming, you may wish to take Computer Science I instead.
This is a fast-paced course, and at times the amount of material covered may seem unreasonable, especially for novice programmers. The instructor encourages the students to ask questions, and get things understood then and there during the class.
Title: C How to Program, 3rd Edition, 2000
Author: Harvey M. Deitel, Paul J. Deitel
ISBN: 0130895725
This book covers both the process of programming and the C programming
language. It also has reference sections that will be useful for
in-class exercises, homework, the project, and the final exam.
This is a one-credit course meeting two hours each week. We will have seven classes, as shown in Table 1.
Homework will be handed out in class. It will also be made available
electronically on the course web site. It will be due at the beginning of the
following class. Please have your homework printed before class begins. Note
that there is a project to be handed in by the end of our schedule
| Dates for Section 2 | Dates for Section 4 | Topics | Suggested Reading | Work Due |
| 01/14/2002 | 01/16/2002 | Introduction | Chapter 1, 2 | |
| 01/28/2002 | 01/23/2002 | logic, repetition, and iteration | Chapter 3, 4 | HW-1 |
| 02/04/2002 | 01/30/2002 | Functions | Chapter 5 | HW-2 |
| 02/11/2002 | 02/06/2002 | Arrays / Pointers, project out | Chapter 6, 7 | HW-3 |
| 02/19/2002 | 02/13/2002 | Strings | Chapter 8, 9 | HW-4 |
| 02/25/2002 | 02/20/2002 | Bit Operations | Chapter 10, Appendix E | HW-5 |
| 03/04/2002 | 02/27/2002 | Final Exam | PROJECT |
TABLE 1. Class Schedule
Numeric grades are determined by weighting the components as shown in Table
2. Note that this is a "Studio" course. The in-class exercises are important,
and constitute a large portion of your final grade. If you must miss a class for some
reason, you will need to submit the in-class exercises at the beginning of the
next class.
|
In-class exercises |
20% |
|
Homework |
30% |
|
Project |
20% |
|
Final Exam |
30% |
TABLE 2. Relative Weights
Penalty for late submission is 10% per day. The lowest homework grade will be dropped. However, homework will increase in difficulty, and is designed to prepare you for the project. We reserve the right to increase the value of the project in the face of extraordinary work.
Numeric grades are mapped to letter grades as shown in Table 3. Note that we
reserve the right to modify this mapping if circumstances warrant. Grades are
based on demonstrated mastery of the course material.
| >= 90 | A |
| >= 80 | B |
| >= 70 | C |
| >= 60 | D |
| < 60 | F |
TABLE 3. Letter grade Mapping
This course is taught in a lab of Unix workstations. Unix was developed in C, and was a major motivation for creating C, so there is a strong synergy. For our C compiler, we will be using GNU C.
Students may complete homework assignments on Unix lab machines or connected to an RCS remote access server. However, we recognized that most students have their own computing equipment, and would like to take advantage of that equipment.
One possibility is to use Microsoft Visual C++. However, this requires learning a fairly complex programming development environment. Furthermore, students will need to be sure to use only C, not C++, constructs in their programming. Visual C++ also does not catch certain programming errors that trigger error messages with GNU C. If you use Visual C++ to complete your homework, please recompile your program with GNU C before submission.
Another possibility is to install Linux, a complete Unix environment. If you need Linux for other courses, or you would seriously like to learn more about programming, this is a good solution.
Yet another possibility is to install a Unix-on-Windows compatibility package, such as Cygwin (http://sources.redhat.com/cygwin/). This includes the GNU C compiler.
Homework assignments and the project require you to submit programs. We will provide an email address of the grader to which you can send you programs, as attachments, for grading. Please be sure you have comments giving your name and section in your C source file. Name your C source file as rcsid-hwset-problem.c. For example, if your RCS user id is cheng3, and you are writing a program to solve problem 3 of homework set 2, then you would name your file cheng3-2-3.c.
Use the Unix script command to collect a program listing, show it being compiled, and show it running. Then send in the program listing in the email body, with the source file as an attachment. Submitting in this way will make it easier for the grader to keep track of your submissions, and to verify the correctness of your program. An example:
$ script outfile
bash$ cat cheng3-2-3.c
Text of the program is printed out here.
bash$ gcc -Wall -o cheng3-2-3 cheng3-2-3.c
bash$ cheng3-2-3
Results of running the program are printed out here.
bash$ exit
[Email 'outfile' in the message body to the grader. Attach the source file cheng3-2-3.c]
Successful education requires trust between students and teachers. Students must trust that teachers are presenting appropriate material, requiring appropriate work, and grading that work fairly. Teachers must trust that students are turning in their own work. Violating this trust undermines education.
Collaboration during in-class activities is encouraged. Students may team up to present a joint solution to an in-class exercise; all students in the team will receive credit for that solution. Students are encouraged to discuss approaches to solutions of homework problems with others, but the actual homework submission must be their own work. Copying code, such as via file transfer, cut-and-paste, or typing in what you see or recollect of another student's working program, is forbidden. Similarly, students may discuss techniques and algorithms for the project, but the actual coding is to be done independently.
To determine if you have completed the homework or project independently with the existence of collaboration and discussion, ask yourself if you can redo the assignment without help from others (not by remembering the solution). If necessary, I will adopt this rule to determine the independence of your work (that is, by asking you to solve the same or a similar problem again).
I will also use MOSS, an automatic software plagiarism detector, to check any suspicious homework or project. The penalty for the cheating is a zero for the assignment and, additionally, one letter down for the final grade (suggested by Prof Mark Goldberg).
The final exam is to be strictly independent work. No discussion or collaboration is permitted.