CIS 330

C/C++ and UNIX

Logistics

Instructor: Kevin Butler (butler 'at' cs.uoregon.edu)
Location: 106 Deady Hall
Meeting Times: Tues/Thurs 10:00AM-11:20AM
Credits: 4
Office Hours: Wed 10:00-11:30 AM or by appointment
GTF: Sruthi Rangavajhula (sruthike at cs dot uoregon dot edu)
Recitation Sections: Mon 1:00-1:50 PM, Thurs 2:00-2:50 PM, 100 Deschutes
GTF Office Hours: Tues/Wed 2:00-3:00 PM, 231 Deschutes

Course Description

Virtually every major operating system in current use is either strongly influenced by or based directly on UNIX. UNIX was written in C, and understanding the close correlation between the two aids in understanding how computer systems are designed and developed. C++ is an outgrowth of C, improving on and extending its functionality; understanding of the language in a deep manner is predicated on understanding C and UNIX.

This course will give students experience programming in C and C++ within the UNIX environment. UNIX tools will be introduced, as will the general UNIX philosophy. Fluency in use of the command line will be encouraged and expected, as will canonical compiler tools such as gcc. We will examine the computing memory model from the standpoint of the C compiler, and see how fundamental primitives such as arrays and pointers exist within this model. We will examine static and dynamic memory allocation, filesystem interfaces, and the system call interface in general. We will also examine some of the features of C++ that cause it to differ from C, and some of the extended functionality found within it such as inheritance, constructors, templates (including coverage of the STL), and namespaces.

A detailed list of topics, expected readings, and assignments (subject to change as the term evolves) will be available on the course schedule.

The following textbooks and references are recommended:

Other good references include the following: There are also numerous valuable online resources that we will discuss during the lectures.

Please contact the instructor if you have questions regarding the material or concerns about whether your background is suitable for the course.

Course Expectations

The expectations for the course are that students will attend every class, do the readings assigned for class, and actively and constructively participate in class discussions. There will be assignments posted regularly and potentially in-class quizzes.

Grading Schema

10% Programming Assignments
40% Projects
20% Midterm
25% Final
5% Quizzes, Attendence, Participation

Academic Integrity Policy

Students are required to follow the university guidelines on academic conduct at all times. Students failing to meet these standards will automatically receive a 'F' grade for the course. The instructor carefully monitors for instances of offenses such as plagiarism and illegal collaboration, so it is very important that students use their best possible judgement in meeting this policy. The instructor will not entertain any discussion on the discovery of an offense, and will assign the 'F' grade and refer the student to the appropriate University bodies for possible further action.