logohome

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.

 Index

Prerequisites

Overview

Course Outline

Administrative Information

Grading Policy

Goals and Outcomes

Late Assignment Policy

 

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.

Lecture Notes

Programming Assignments

Laboratory Sessions

 

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


Prerequisites

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.

top

Overview

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.

top

Course Outline

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.

top

Administrative Information

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: Hugh C. Lauer
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

 

 

 

 

 

 

top


Grading Policy

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

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

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.

Academic Honesty

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 Policy

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.

top


Goals and Outcomes

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

 

Mapping of course outcomes to CS Department Outcomes

top