Fall 2020
Class time: 3:25-4:40 p.m., Mondays and Wednesdays
Class location: online (zoom link via blackboard)
The goal of this course is to lay the foundation to give you a better understanding of how modern computer systems work. In CSC 172, you learned how to write a human-readable program that executes on a computer system. In CSC 252, you will learn what a computer system does with your program in order to produce your desired result. Understanding what a computer does with your program will both make you a better programmer, allowing you to make better algorithmic, complexity, accuracy, and security choices, and prepare you for future courses in the design and implementation of computer systems.
Topics to be covered include:
CSC 252 is in turn a prerequisite for all further elective courses in Systems, including CSC 255 (Advanced Programming Systems), CSC 256 (Operating Systems), CSC 257 (Networks), and CSC 258 (Parallel and Distributed Systems).
The website includes a host of supplemental material (including a C tutorial), which you might find useful when preparing to implement your programming assignments.
There will be approximately seven assignments, at least five of which will require programming, and two exams. Most programming assignments will be written in C, but several will require knowledge of assembly language as well. All will be done under Linux. The student website that accompanies the textbook has a wealth of resources, including on C and Linux. I highly recommend that you get started on getting familiar with them. The programming projects are bound to be time-consuming, with the idea that you learn from the experience, so be sure to start on them as soon as they are handed out. There will also be occasional in-class quizzes and additional (non-programming) homeworks. Class participation is encouraged. Your grade will be based on a combination of the assignments/quizzes and two exams (midterm and final), with a tentative division being 65% for the programming and written assignments and quizzes, and 35% for the two exams. Those taking the course as CSC 452 will have extra requirements.
Student conduct in CSC 252 is governed by the College Academic Honesty Policy and the Undergraduate Laboratory Policies of the Computer Science Department.
The following are additional details relevant to CSC 252/CSC 452:
Exams in CSC 252/CSC 452 must be strictly individual work.
Collaboration on assignments among team members is of course expected. Collaboration on assignments across teams (or among individuals on non-team-based assignments) is encouraged at the level of ideas. Feel free to ask each other questions, brainstorm on algorithms, or work together at a whiteboard. You may not claim work as your own, however, unless you transform the ideas into substance by yourself. You can use the following guideline: when it comes time for you to write your program or your homework paper, do not use any written material from the discussion. This means you must leave any brainstorming sessions with no written notes. If you can reconstruct the discussion and complete the solution on your own, then you have learned the material (and that is the objective of this course!).
For team projects, you should make sure to identify division of labor in your README. While projects will generally be graded as a team rather than separately for each individual, corrective action could be taken.
Similarly, you are welcome to read anything you find on the web, but you must close all web pages before beginning to write your code. You are not permitted to repeatedly consult a source. You can read it, understand it, put it away, and write your own similar code, but you must not copy anything. Both electronic copy-and-paste and copying through short-term memory are expressly forbidden.
To minimize opportunities to steal code, all students must protect the directories in which they do their work.
Posting homework and project solutions to public repositories on sites like GitHub is a violation of the College’s Academic Honesty Policy, Section V.B.2 “Giving Unauthorized Aid.”
Finally, if you have any questions about what is permitted and what is not, please ask! While I trust that you are all here to learn and that each of you will adhere to the policies laid out above, any violations detected will be strictly dealt with in accordance with the university's procedures as laid out in the College Academic Honesty Policy.
In order to accommodate unforeseen circumstances fairly across all students, you will be allowed 3 slip days across all assignments without penalty. In order to take advantage of the slip days, you must email the assigned TA for the assignment in advance of the deadline indicating who your partner/s for the assignment are and how many of your slip days you plan to utilize for the assignment.
Examinations will be given at alternate times only with appropriately documented medical excuses.