Justin Carlson | Khaled A. Harras |
justinca@qatar.cmu.edu | kharras@qatar.cmu.edu |
M1014, 454-8543 | M1020, 454-8617 |
Tue, Wed, 1-4 pm | Thu, 2-4 pm |
Yi Luen (Tessa) Eng | Samreen Anjum |
yeng@andrew.cmu.edu | sanjum@qatar.cmu.edu |
Please see the class Web page for up-to-date office hours
Mon and Wed, 10:00 - 11:20am, M2035
Thu 9:30-10:20am, M2035, Samreen Anjum
Note: We will be using a dlist for communication and announcements. We will not be using the Andrew or Blackboard message boards for this class.
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.
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.
We 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 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.
Component | Weight |
Labs (8) | 40% |
Quizzes | 5% |
Participation | 5% |
Exams (3) | 30% |
Final Exam | 20% |
Semester grades will be assigned as follows:
Score | Grade |
[90-100] | A |
[80-90) | B |
[70-80) | C |
[60-70) | D |
Below 60 | R |
Academic integrity is fundamentally about ethical behavior. Appropriate collaboration and research of previous work is an important part of the learning process. However, not all collaboration or use of existing work is ethical. The overarching principles which should guide you when determining whether or not it is appropriate to use a source or collaborate with a classmate involve answering these questions:
In any ethical decision there is always judgment involved. Some assignments and activities involve collaborating with a team, in others you are asked to work individually. You are expected to have some common sense and to use it.
As a guiding principle, talking about concepts is usually good, talking about specific answers or approaches to problems is usually not.
Attribution of sources is a key idea here; if you use work which is not your own, that work should be cited. For this class, citation is not required to be in a specific format, but any citation should clearly identify the author and source of any work which is not your own. Refer to the university policy on plagiarism and cheating, which can be found on page 168 of The Word for more information.
Not all assignments are the same. On some you will be given explicit instructions about what level of collaboration is appropriate, and you are expected to abide by those restrictions even if you disagree with them.
If you are at all uncertain about the ethicality of an action, whether it be working with another student, researching existing code, or something else, you are always welcome to ask the instructors for clarification.
The severity of sanctions imposed for an academic integrity violation will depend on the severity of the transgression and ascertained intent of the student. Penalties may range from failing the assignment to failing the course.
Class | Date | Day | Topic | Reading | Projects | Lecturer |
1 | 11-Jan | Mon | Overview, Unix and Emacs | Both | ||
2 | 13-Jan | Wed | Unix & shell scripting I | Lab 1 Out | KAH | |
3 | 18-Jan | Mon | Intro to C Programming I | Chapter 1 & 2 | KAH | |
4 | 20-Jan | Wed | Intro to C Programming II | Chapter 3 | KAH | |
5 | 25-Jan | Mon | Arrays | Chapter 4 & 5 | Lab 2 Out | KAH |
6 | 27-Jan | Wed | Strings | Chapter 5 and Appendix B3 | KAH | |
7 | 1-Feb | Mon | Dynamic Memory Allocation | Chapter 5 | Lab 3 Out | KAH |
8 | 3-Feb | Wed | File I/O, Pointer Arithmetic | Chapter 5 and Chapter 7 | KAH | |
9 | 8-Feb | Mon | Exam 1 | n/a | ||
10 | 10-Feb | Wed | Structs | Chapter 6 | KAH | |
11 | 15-Feb | Mon | Linked Lists I | KAH | ||
12 | 17-Feb | Wed | Linked Lists II | Lab 4 Out | KAH | |
13 | 22-Feb | Mon | Hashing and Makefiles | KAH | ||
14 | 24-Feb | Wed | Binary Trees | KAH | ||
Spring Break | ||||||
15 | 8-Mar | Mon | Exam 2 (Computer based) | n/a | ||
16 | 10-Mar | Wed | Perl I | Lab 5 Out | JDC | |
17 | 15-Mar | Mon | Perl II | JDC | ||
18 | 17-Mar | Wed | Perl III | JDC | ||
19 | 22-Mar | Mon | System Calls | Lab 6 Out | JDC | |
20 | 24-Mar | Wed | Function Pointers | JDC | ||
21 | 29-Mar | Mon | Lab 7 Discussion | Lab 7a & 7b Out | JDC | |
22 | 31-Mar | Wed | Process Control I | JDC | ||
23 | 5-Apr | Mon | Process Control II | JDC | ||
24 | 7-Apr | Wed | Process Control III | JDC | ||
25 | 12-Apr | Mon | Exam 3 | n/a | ||
26 | 14-Apr | Wed | TBA | JDC | ||
27 | 19-Apr | Mon | TBA | JDC | ||
28 | 21-Apr | Wed | Review | Both | ||