S09 15-123 Effective Programming in C and UNIX

Syllabus

Instructor Majd Sakr
Office Location 1007
Phone 454-8625
E-mail
msakr@qatar.cmu.edu
Office Hours Tue 10am-12pm or if the door's open, it's office hours
Course AssistantOffice Hours

Yi Luen (Tessa) Eng
yeng@andrew.cmu.edu

In A136:
Mon & Wed 2:30-4pm
Thu 1-2pm
Sat & Sun 10-11am
Instructor Khaled Harras
Office Location 1020
Phone 454-8617
E-mail
kharras@qatar.cmu.edu
Office Hours Sun 2-4pm OR by appointment

Course Objective

The primary purpose of this course is to prepare students for 15-213 which, in turn, prepares them for upper-division Systems electives (e.g., Operating Systems or Computer Networks). We will use the C language (old fashioned C, not C++) to teach the basics of pointers, memory addressing, copying and moving memory, and other fundamental system tasks. We move off the Windows platform to AFS (the Andrew File System) and UNIX. On UNIX we will use the gcc compiler and the gdb debugger. The use of simple make files and a scripting language will also be taught.


Learning Outcomes

Upon the successful completion of this course, students will:


Topic Coverage

The following provides an outline to the material covered. See the course website for detailed lecture notes:


Textbook

We are using one textbook:

The Kernighan & Ritchie C text (K&R) is difficult reading - it's a langauge reference manual and reads like one. But, as a CS major, you need to be able to read and understand K&R at some point in your development as a programmer. There are no assigned readings.

I expect you to use the K & R text as a resource if you don't understand something in C or want to refresh your memory (like, "What were those silly scanf format symbols, again?"). To answer this question, if you're using K & R, I would expect you to look in the index under "scanf" or "format" and see if what you find is what you need. This is how I use technical references. It's not like reading a novel or a history book.

Remember, also, that there are man pages that you can examine as well ("man scanf" for the above example).


Assignments & Exams

Assignments will be challenging and you will have to solve them independently! You are permitted to discuss algorithms with classmates (at an abstract level!, e.g., "I used a linear search of the array to find the item I needed."), and ask for help with syntax errors from classmates when you're compiling your code. But you are absolutely not permitted to copy code either electronically or via any other means.

N.B., it is likely that you will not be able to do these assignments over a day or two.

Programming Assignments will usually be released Wednesday and will be due at midnight on the second Sunday following. If you are finished early and submit by Saturday midnight, you receive a 10% bonus. If you are late submitting a lab by 24 hours or less, you may hand in with a 10% penalty. After 24 hours the handin window is closed. If you are not done - hand in what you have. You'll get partial credit for the understanding that you have demonstrated.

Exam Dates will be on the course Assignments page. No alternative make up exam will be given without a valid medical excuse.


Office Hours & Getting Help

During my office hours you can stop in any time without an appointment. If my door is open and I'm not talking with someone, feel free to stop in and talk about whatever you need.

Caveat: If you are attending class regularly I will make every effort to accommodate extra hours to help you. But, if you are not attending, or attending very sporadically, I will not make time for you outside of normal office hours. Please attend class! Also, I can't emphasis enough how important it is for you to ask for help as soon as you realize you do not understand a topic.

CAs and TAs are here to help you. Email them and make appointments to meet and discuss the assignment. Be warned that they will NOT write code for you. They will explain the assignment and the theory behind it. They may suggest coding strategies and point you to help in your text but they will not write code for you. You must make the transition from thought to code.


Grading Policy

Assessment

Weight

Labs (8)

40%

Quizzes

10%

Exam 1

10%

Exam 2 (online)

10%

Exam 3

10%

Final

20

-------------

--------

Total

100%

Your % of 100%

Course Grade

 > =  90%

A

 > =  80%

B

 > =  70%

C

 > =  60%

D

 < 60%

R