[FrontPage] [TitleIndex] [WordIndex

This is a new version of the official syllabus as of Fall 2010, heavily derived from its predecessor, which still exists elsewhere on the wiki.


See also: CourseCalendar, CourseDisclaimer, CourseAcknowledgements, CourseObjectives.

Who/What/Where etc.

This course is Foundations of Computer Science. It is a 4 credit course offered Fall 2010 at the Franklin W. Olin College of Engineering. A 6 credit version used to be offered, and this option may be available on request as an independent study.

The course is taught by Professor Lynn Andrea Stein. Lynn can often be found in her lab (AC312) or office (OC358); at x2525; online at las@olin; or on AIM (screen name available on request or ask around the dorms; I'd rather it not be posted to the web, please!)

We meet Tuesdays and Fridays 10-11:50 in AC326.

This syllabus is way more bureaucratic and official-sounding (not to mention officious) than the rest of the class will be. I thought I'd get it all out of my system at once....

Course Expectations

These are the rules. Know them. Don't break them. If you have a problem with them, discuss it with me. They are here to protect both of us. If they're not doing that job, we need to rethink them, but don't ignore them and expect that it will all be OK.

Time Commitment

This is a 4 credit course. That means that the average well-prepared student keeping up with the coursework should expect to spend 12 hours a week on this course.

The number of hours per week is meant as a guideline. It is my intention that (a) you will be provided with enough things to profitably spend approximately this number of hours per week on the course and (b) you should not need to spend appreciably more than this number of hours per week on the course.

This assumes that you are keeping up with the work (and in particular that you are doing reading or other independent-learning things outside of class and on schedule, generally in advance of class sessions). If you fall behind, you should expect that it will take extra effort to catch up. The 12-hour estimate also assumes that the specified number of hours is spent working reasonably efficiently; if you haven't slept in a week or are studying during the 12-measure rests in a concerto you're playing, please discount appropriately.

As much as possible, I will provide time estimates for how long I think each component of the coursework should take. You will need to help me to learn whether these estimates are reasonable.

If you find that you are regularly spending more than the indicated number of hours on this course, please let me know ASAP. This means either that I am doing a bad job of estimating how much work I'm asking you to do or that you're struggling more with the material or working less efficiently than you might be. These are all fixable problems, but they're better fixed earlier than later. In addition, do not spend unlimited time working until you finally solve a problem. Know when you've hit the limit of productive work on something and it is time to give up (or let me know so I can redirect you to a more efficient way of using your time).

If you find that you are regularly spending substantially less time than expected on this course -- or if the time that you are spending feels like it's not being used well -- please let me know that as well. There is an enormous amount of interesting material that we're not going to have time to cover and I would be happy to point you towards some of the advanced aspects of the material we're covering. It is not in any of our interests for you to be bored or for your time to be poorly used by the course.

NB: This course is not using time-based grading. There is no requirement that you spend exactly a certain amount of time on the course each week. Rather, the time is a guideline that lets each of us know whether the course is meeting our needs and expectations.


Unlike some of the classes that I have taught at Olin, FOCS attendance is expected. Much of this course does not have a textbook. It does not even have a fixed syllabus. What happens in the classroom will not be entirely predictable nor will the critical points necessarily be replicated elsewhere. If you miss class, you will be missing something that cannot be made up. At the same time, your participation in class provides me with critical feedback; the course as a whole will suffer if you are not there.

Please note that attendance means mentally as well as physically. If you get yourself into a position where you will simply not be able to absorb the content of the class, it may be better not to come. If this happens once, I will likely overlook it. If it happens regularly, I will feel entitled to conclude that you are not taking the participation requirement seriously.

I do understand that conflicts arise. I expect that you will let me know substantially in advance of any class session that you will unavoidably miss. ("Substantially in advance" means as soon as you know it yourself. Email is the best way to let me know as it also creates a record.) I further expect that you will make arrangements to obtain as full a report as possible from a classmate and that you will take complete responsibility for any missed content.

The only exceptions to this policy are emergencies. Hospitalization is an emergency. Play rehearsal is not. Neither is an airplane ticket for noon on November 19.

You will, of course, need to make your own decisions and tradeoffs in this as in all of your life. Please please understand that these decisions will have consequences. In particular, unexcused absences (or excessive "excused" absences) may substantially affect your course grade.

Missed Work

Homeworks, projects, examinations, in-class and online participation are all required components of this class. Missing any component of the coursework will have consequences for your course grade. The consequence for missing an assignment may, at my discretion, exceed the weight of that assignment (had it been completed) in your course grade. If you believe that we need to discuss an exception to this policy, please let me know.

As a reminder, only students who have had an unanticipated disruption in their academic terms are eligible for a grade of incomplete. That grade must be requested (of the registrar) by the student prior to the last day of classes. Under Olin's policies, I cannot give a grade of incomplete, an extension beyond the end of term, or other hold-over grade.

Collaboration Policy

You are strongly encouraged to collaborate with your classmates as a means of learning the course material. Some aspects of course assignments are also intended primarily as educational rather than for assessment. In these cases, peers can be an invaluable resource. However, it is also important to determine what you understand on your own, both for your own callibration and for formal assessment purposes. Therefore, collaboration is encouraged except as specified in particular assignments.

In general:

All collaboration must be acknowledged. This includes anyone you've discussed the assignment with at all and any resources that you may have consulted in order to complete this assignment. Unacknowledged collaboration is ilicit collaboration and may have consequences ranging from grade penalty to honor board action. If you have not collaborated on a particular assignment, you must indicate this on that assignment. Assignments without a collaboration declaration will not be accepted.


We will discuss course reading information on the first day of class. There is one textbook that you are responsible for obtaining (access to): Sipser's Introduction to the Theory of Computation. Cormen, Leiserson, Rivest, and Stein's Introduction to Algorithms is highly recommended but large and expensive; you may substitute (access to) another algorithms textbook if you wish, but I believe Cormen is worth owning. Other editions of these texts are fine. The Olin Library also has copies on reserve, though obviously not enough for everyone in the class.

Course Grade

A substantial fraction of this class is about the formal mechanisms underlying computation (and their implications for actual computer programs). In some senses, it's like a math class. It is very different from a class like Software Design , which is fundamentally project-based and involves internalizing the ability to build (certain kinds of) things.

As a result, your grade in this course will be based primarily on your ability to use formal analytical tools. This will be measured largely through examinations and through written problem sets. Because this is Olin, you will also put these analytical skills to use in building things. Because this class is being built by all of us as we go along, you will also communicate your understanding through class participation and online participation. All of these things will factor into your grade, but in most cases the bulk of your grade will be based on examinations and, to a lesser extent, on problem sets. Some notes:

I will make every attempt to give solid mid-term feedback on or before the 33d day of instruction (October 20).


You are expected to keep up with assignments in this course. Late work will not be accepted. (If you believe that there's a really good reason for me to reconsider this, please let me know as soon as the reason becomes apparent. Given the nature of this course, I'm disinclined to accept late work.)


Some reading will be assigned. Other reading will be recommended. You should use your own judgement as to how you learn best; however, you will be expected to make adequate use of texts to support your learning. The Olin College Library has several texts on each of the topics that we will be covering in this class. You may find that you prefer someone else's coverage to the books we are officially using

Class Participation

The enrollment in this class means that I will not be able to run a single-seminar style as I'd prefer, but there will be a lot of small group work. I expect you to come to class prepared to contribute. If you don't contribute, I will notice and I will let you know. If you do contribute to large group discussion, please bear in mind that there are a large number of students in the class and make room for them to contribute as well.

Notetaking/Wiki Participation

NB scanned paper notes are acceptable.

There will likely be additional on-line participation required at various points during the semester. A mailing list and the existing wiki will be possible venues, but we may also add blogging, threaded discussion, or other facilities as appropriate.

Written Assignments/Problem Sets

The bulk of the ongoing work in this class will be in the form of regular problem sets. These will be due approximately every two weeks -- there should be six of them -- but the timing will vary to fit the topics presented. There will also be problems assigned between (some) class sessions; some of these may be part of the problem sets while others will be for class preparation only.

You may be asked to assist in evaluating your peers' work. This provides an opportunity for you to see other solutions to problems and for you to enrich your own understanding (even if it means by figuring out why an incorrect answer is wrong). It also leverages the class numbers to increase the feedback and assessment available. (Instructor grading will also occur, just not always....unless you don't mind getting your problem sets back the week after graduation...)

Time spent in evaluating peer work will be included in estimates of time spent on total coursework, of course.

Programming Assignments/Projects

In this course, projects and programming exist to reinforce and deepen your understanding of the fundamental course material. They are not a course goal in and of themselves. You should, of course, expect others to read only elegant, well-written, and adequately documented code; however, code cleverness will not be a major assessment factor in this course.


Regular examinations will provide the bulk of your evaluation this semester except in unusual cases. At present, three exams are planned. These are tentatively scheduled for:

However, it is my present intention to give these as honor code take-home exams, i.e., to give you some flexibility in when and where you actually take the exam. For the first two examinations, class will not be held so that the time and room for the class would be available if you choose to take the exam then and there. For the final exam, the registrar-scheduled exam time and room would serve the same function.

2013-07-17 10:42