CSCI-1190 Beginning C Programming for Engineers (Spring 2002, Section 2,4)

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

1 Introduction

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.

2 Textbook

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. 

3 Schedule

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

4 Grading Policy

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

5 Programming Environment

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.

6 Submitting Programs

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]

7 Academic Integrity and Rules for Collaboration

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.

8 Suggestions for Success