
System Programming for
Non-Majors
CS
2301
B-Term 2009
CS 2301 is intended for non-computer science majors who are likely to need to write programs in C or other “low-level” computer languages in their studies at WPI and/or in their careers in their chosen professions. It is also intended for non-computer science majors who wish to take upper-level courses in the systems area of the computer science curriculum.
The following links are password-protected in accordance with WPI policy regarding the posting of copyright materials on course web sites. When you follow one of them, you will be asked to login with your regular WPI login ID and the password CS-2301.
This term, lectures will be automatically captured, including voice, video, and screen presentations. Each lecture will automatically be added to myWPI approximately two hours after the end of class. Students may access all lectures by logging into mywpi.wpi.edu, clicking on the CS-2301 course, and navigating to Course Materials. Lectures may also be accessed at the following URL.
http://echo360.wpi.edu/ess/feed?id=f681b72c-565e-4aa1-aa0a-3e57ffc18073&type=M4V
CS 2301 assumes some
prior programming experience, which may be a previous Computer Science
course at WPI such as CS
1101 or CS
1102, a computer programming course in high school using a language such as
Java, or a job in which you had to write or participate in the development of a
non-trivial program in any programming language.
Students who
attempt to take CS 2301 as their first
computer programming experience generally leave the course in frustration after
wasting a few weeks.
Also, it
usually does not work very well to take this course while carrying an overload.
CS 2301 has three main components:–
·
Lectures, which introduce and discuss the
principle components of the C
language and the most common data structures that technical professionals
typically need when programming in C.
These data structures are arrays
(including strings), lists, trees, and hash tables.
·
Programming Assignments, in which students write and debug
programs to use the language constructs and data structures introduced in
class. There will be approximately six programming assignments, typically
assigned on Tuesdays and due at 11:59 PM about one week later. Timely completion of all programming
assignments is required to pass this course. If, after a good
faith effort to attempt an assignment, it proves too difficult or there are
fundamental things you do not understand, then submit an incomplete assignment
with your own analysis of your difficulty.
·
Laboratory sessions, in which students learn how to use the
various systems and tools needed to write and debug programs in C. (Students who are already proficient
in these tools may also earn laboratory credit by learning Eclipse or Microsoft Visual
Studio and demonstrating to the professor or a TA their proficiency with
those tools.)
There will also be three exams, scheduled for November 13,
December 1, and December 15. See below for more information about exams.
The following is a rough outline of the course. Dates of
some topics may change, depending upon how the class goes.
·
Week 1:– Introduction to the course, numerical
computation in C, input and output, scanf() and printf()
·
Week 2:– Expressions, assignments, operator
precedence, loops, conditionals, and introduction to functions
·
Week 3:– Functions, recursive functions; role of
the stack during execution. Exam #1, Friday, November 13, 2009
·
Week 4:– Pointers, arrays, and strings; dynamic
memory allocation, malloc() and free()
·
Week 5:– Structures, unions, and introduction to
lists (one class only this week)
·
Week 6:– Lists and trees. Exam #2, Tuesday,
December 1, 2009
·
Week 7:– Hash tables, bitwise operations;
interface with operating system
·
Week 8:– Final Exam, Tuesday, December 15, 2009.
CS-2301 meets for two 2-hour classes per week for a seven-week undergraduate term (28 hours).
Time and Place:
Tuesdays and Fridays, 2:00 — 3:50 AM, Higgins Labs 116
October 27 – December 15, 2009. There
is no class on Friday, November 27, because of the Thanksgiving holiday.
Professor:
Email: <professor’s last name>@cs.wpi.edu
Office hours: (normally) 1 hour after each class; or see chart below; or
by appointment
Office: Fuller Labs, Room 144
Teaching
Assistants:
Feng Li (email: lif), Fuller A22
Medhabi Ray (email: medhabi), Fuller A22
(e-mail addresses are in the
domain cs.wpi.edu)
Senior
Assistant:
Andrew Keating (email: andrewzk@wpi), Fuller A22
Textbook: Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, 2nd edition, Prentice Hall, 1988.
Class e-mail
lists: The following two lists are in the domain cs.wpi.edu:–
cs2301-all — to reach all students, TAs, SAs, and the
professor
cs2301-staff — to reach just the
TAs, SAs, and the professor
Course web
site: http://web.cs.wpi.edu/~cs2301/d09/
In order to comply with copyright regulations, portions of this web site
may require you to log in. Please use your own WPI login ID and the password CS-2301.
Absences: Students
needing to be absent from class should notify the professor by e-mail or in
person as soon as possible. Likewise, students needing to schedule assignments
or presentations around religious holidays, projects, or interview trips should
notify the professor at the beginning of
the course.
Class cancellations and snow dates: Consult official WPI sources regarding the cancellation of classes due to snow and for rescheduling of those classes.
Office hours:
|
Day/Time |
10:00 |
11:00 |
12:00 |
1:00 |
2:00 |
3:00 |
4:00 |
5:00 |
6:00 |
7:00 |
8:00 |
9:00 |
10:00 |
|
Sunday |
|
|
|
|
|
|
|
|
|
|
AK |
AK |
|
|
Monday |
|
|
|
RAY |
RAY |
|
|
|
|
|
|
|
|
|
Tuesday |
|
|
|
|
Class |
HCL |
|
LIF |
LIF |
|
|
|
|
|
Wednesday |
|
|
|
|
LAB1 |
LAB2 |
LIF |
LIF |
|
|
|
|
|
|
Thursday |
|
|
|
|
|
|
|
|
RAY |
RAY |
|
|
|
|
Friday |
|
|
HCL |
|
Class |
HCL |
|
|
|
|
|
|
|
Final grades will be computed as follows:
·
Exams: 45%
·
Programming assignments: 45%
·
Labs and class
participation: 10%
It is unlikely that a student can pass this course if he/she does not submit programming assignments or attend class regularly. In particular, good grades on exams are not a substitute for submitting the programming assignments.
If there are any circumstances that limit or restrict your participation in the class or the completion of assignments, please contact the professor as soon as possible in order to work something out.
Exams will be one hour in length and will be closed book, but students may bring one 8˝ -by-11 inch sheet of prepared notes (two sides). You may not use any computers, calculators, mobile phones, music players, or any other electronic devices during the exams.
Prior to each exam, there will be a brief review period in which students may ask questions and discuss topics relevant to the exam.
There are no makeup
exams. Absence from an exam will be excused only for medical or emergency
reasons. A note from your doctor or from the Office of Academic Advising will
be required. In extreme circumstances, the Professor will try to help you find
a way to pass the course.
Students with disabilities who believe that they need accommodations in this class are encouraged to contact the Disability Services Office (DSO) as soon as possible to ensure that such accommodations can be implemented in a timely fashion. The DSO is located in Daniels Hall. The Professor must receive requests for accommodations at least one week prior to an exam.
Students are strongly encouraged to work together, help each other, reinforce each others’ knowledge, and consult experts and resources outside the course on all topics. Like most professional environments in your future, success depends upon how well you do when you have access to a full array of resources, not how much you remember by rote.
Once you and your classmates have worked out a solution to a problem, you must write it up in your own words or code it in your own coding style. Some assignments may be team assignments. For these, it is expected that all team members participate with roughly equal levels of effort. When you put your name on a team submission of an assignment, not only are you testifying that you have fully participated in that assignment, but also your teammates are also testifying that you have fully participated.
For all assignments, the WPI Academic Honesty Policy applies:–
http://www.wpi.edu/Pubs/Policies/Honesty/policy.html
Late programming assignments will be accepted within 24 hours of the due date. Each student will be allowed one late submission without penalty. Additional late submissions will incur an automatic 25% penalty. Any assignment turned in after the 24-hour grace period will receive a grade of zero. No extra credit or makeup programming assignments will be given. If you have special circumstances, contact the Professor at least 24 hours before the assignment is due.
The C programming language exposes details of how the underlying hardware stores data and executes software. It is commonly used in situations where there is no support for higher-level languages — e.g., operating systems, device drivers, and embedded systems — and in specialized systems where no higher level languages have been implemented.
Upon successful completion of this course, the student should
·
Be able to implement, test, debug, and document programs in C
·
Understand how a program in a procedural language transforms data by
changing the contents of memory cells
·
Be able to program with pointers and perform pointer arithmetic
·
Be able to write programs that perform manual memory management
·
Understand how to write and use functions and how the stack implements
function calls
·
Understand low-level input and output routines
·
Understand and use the common data structures typically found in C programs — namely arrays, strings,
lists, trees, and hash tables
·
Use Unix commands to manage files and develop programs, including
multi-module programs and makefiles
·
Use Visual Studio to develop programs, including multi-module programs