Syllabus
Welcome to CSC 282.01! The official course description for this class is:
The most successful software designers master a variety of languages, algorithms, and software design methodologies. In this course, you will examine the Unix approach to software design. You will ground that examination, in part, by developing programs that deepen your understanding of advanced techniques of the C programming language. Includes laboratory work.
In other words, we will help you think in C and Unix/GNU Linux.
Learning Goals
Our major objectives for this course include:
- Improving your overall software design skills
- Enhancing your understanding of the C model of programming
- Making you a more facile *nix user
Important Notices
- As is typical, I am over-booked this semester. I apologize.
- I am in the process of writing a series of essays on these subjects. I will likely ask you to read them.
- I’m using new site development tools. That means some things will be a bit wonky on the site. Let me know what you find that’s not in appropriate shape.
Accommodations and adjustments
Please read my policy on accommodations and adjustments and my statement on accessiblity.
Grading
This course is offered for one credit and is graded as S/D/F. College guidelines dictate that one-credit courses rquire about three hours per week. All students who take the course are expected to
- attend at least eleven of the thirteen class meetings;
- do all of the assigned readings (about 30 minutes per week);
- spend an appropriate amount of time on each homework assignment (about 90 minutes per week); and
- participate actively in class.
Students who meet these criteria will earn a grade of S. Students who do not will likely earn a lower grade.
Textbooks and Other Readings
Mecklenburg, Robert (2004). Managing Projects with GNU Make, Third Edition. Sebastapol, CA: O’Reilly and Associates. Also available online at http://oreilly.com/catalog/make3/book/index.csp.
Raymond, Eric S. (2003). The Art of UNIX Programming. Addison-Wesley, Professional. Also available online at http://www.catb.org/esr/writings/taoup/html/.
Rebelsky, Samuel A. (2017). Don’t Embarrass Me; Don’t Embarrass Yourself: Thoughts on Thinking in C and *nix. An e-book (or something similar) in progress available at http://www.cs.grinnell.edu/~rebelsky/musings/index-cnix.
Additional Readings
Here are some other things you might find useful.
Gancarz, Mike. 1994. The Unix Philosophy. Digital Press.
Kernighan, Brian W. & Ritchie, Dennis, M. (1988). The C Programming Language, 2nd Edition: ANSI C. Upper Saddle River, NJ: Prentice-Hall.
Attendance
Your classmates and partners depend on your contributions to learn new material and complete the required work for this course. Don’t let them down! You are expected to arrive on time and actively participate in every class.
If your are sick, please do not come to class. Stay in your room, rest, and seek medical care as needed. Student Health and Counciling Services (SHACS) offers health and mental health services to students.
Participation
Because much of our work in this course involves collaboration and discussion, you will be evaluated on your participation. Participating in class involves:
- being present in class (physically and mentally)
- coming to class on time
- coming to class prepared
- asking questions when appropriate
- making positive contributions to class discussion by volunteering and when called upon
- staying on task during lab exercises, and
- working effectively with your partner(s)
Academic Honesty
Please read my policies on academic honesty and the CS department’s academic honesty policy. I expect you to sign and return the latter.
Citations
Much of the site appearance is due to Charlie Curtsinger (and the underlying tools he uses).