URL http://www.cs.hmc.edu/~keller/cs60Link to Feedback Form
| Final Review | Exams | keywords | examples | rex | rex lite | Java | Java | Prolog Tutorial | HTML | JFLAP | FSM Explorer | ISC |
| Assignments: 1 |
2 |
3 |
4 |
5 |
6 |
Extra Credit: 9
Student Applets |
Slides:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| Worksheets: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Topically Formatted Slides: Low-Level Functional Programming Recursion Lists States and Transitions Grammars Objects Verification Complexity Sorting Finite-State Machines Acceptors Flip-Flops Registers Architecture Contemporary Logic Design (book) |
| Course Goals | Catalog Description | Texts | Errata | On-Line Text | exercises | Solutions received |
| Grading: Course | Assignments | Personnel |
| Honor Code Standard (read carefully) | RCS | How to submit assignments | Late Policy |
| Your Directory ~/cs60: Getting Programming Help | Topic Outline |
| Role | Name | Location | Hours | phone | |
| Instructor | Robert Keller | 242 Olin | 4-5 p.m. MTuW or other | 18483 | keller@cs.hmc.edu |
| System Administrator | Quay Ly | 101 Beckman | 8-5 M-F | 73485 | quay@cs.hmc.edu |
| Secretary | Nancy Mandala | 240 Olin | 1-5 M-F | 18225 | nancy@cs.hmc.edu |
| CS60 Help | Mail CS 60 questions to: | cs60help@cs.hmc.edu | |||
| System Help | Mail system questions to: | help@cs.hmc.edu | |||
| Grader/Tutor | Matt Wright | 102 Beckman | Tu, Th 7-10 | 72074 | mwright@cs.hmc.edu |
| Grader/Tutor | Walt Nissen | 102 Beckman | Wed 7-11 | 73273 | wnissen@cs.hmc.edu |
| Grader/Tutor | Ryan Haskett | 102 Beckman | Mon 7-10, Sat 1-4 | 72054 | rhaskett@cs.hmc.edu |
| Grader/Tutor | Michael Balloni | 102 Beckman | Sun 7-10 | 74913 | mballoni@cs.hmc.edu |
If none of these hours work for you, please let me know: keller@cs.hmc.edu.
Room 102 Beckman is where the X terminals connected to our machine turing are. If you don't wish to use an X terminal, you may telnet to turing.cs.hmc.edu to use it. Get acquainted with turing is a good idea, since some software we use will not be available on other machines.
Introduction to principles of computer science. Algorithms, complexity analysis, data structuring, data and procedural abstraction, grammars, correctness, logic principles, processor organization, operating system concepts, programming languages, basic automata theory, and theoretical limitations.
To learn and apply basic principles of computer science, including software construction, hardware organization, and limitations of computers.
The lecture period will not be devoted exclusively to lecturing. There will be worksheets and quizzes. You are encouraged to bring in questions and problems you are having.
Here is how your overall grade is determined: There is a total of 1000 points, so each point is 0.1% of your grade. This is for reference only. If you base your strategy on understanding rather than point acquisition, the points will follow.
|
Here is how the points are divided:
|
The examinations are closed-book, except that, you are allowed one sheet of paper (double sided) containing your own notes. The exam emphasize conceptual understanding, rather than memorization of fine details.
There will be approximately nine graded assignments, most entailing programming. Programming assignments help drive home key working concepts and principles. Assignments vary in difficulty and will not be equally weighted. There will also be some assignments which you will not submit, but should do anyway because they will help you with other assignments. The languages for the graded assignments will probably be at least one in rex, two in Java, one in Prolog, and one in assembly language (ISCAL, for a simulated machine). Sufficient information about the languages will be provided to enable you to complete the assignments; you do not have to know these languages when you enter the class.
Here is the nominal point breakdown we use on assignments. This may vary somewhat, depending on the emphasis of the assignment.
The program should run according to specification [taking into account any DWIM (do-what-I-mean) situations (e.g. The professor says one thing but really meant something different; Hopefully he or someone will catch this and say something about it before it goes too far.)]
| If you are told to give a function a specific name, do so, as the testing program might not run otherwise. You will be reamed for not following the specification. |
We try to be a learning community here, so don't just be silent about things that you think are errors.
Sometimes the algorithm is given. However, sometimes such clues are ignored, resulting in loss of points unnecessarily or unnecessary floundering.
Some people find a better way than what was suggested. They get extra credit, at grader's discretion.
(Note: "better" does not mean more obscure or cleverly hacked-up, but rather more elegant, or substantially more efficient.)
| Comments should be included in the code to expose the method, any subtleties, etc. |
| Your code should be readable without extraordinary effort. Use spacing, braces, etc. to improve readability. Layout characters are not at a premium, so use them liberally. |
The program should not break in unusual ways for minor input aberrations.
Remember, you can always ask about things before you submit your actual product. There is no reason to lose points on most of the above. You also lose no points or esteem for asking.
To submit an assignment, run, from turing.cs.hmc.edu
(and not some other machine)cs60submit filename |
where filename is the file containing the assignment to be submitted. The file should be an non-encoded ascii file with at most 80 characters per line. The program will ask what assignment this is (a number), and then submit the assignment properly. Shortly thereafter (usually a few seconds), you will recieve by e-mail an exact copy of what was submitted. You will notice that some headers are attached, containing certain essential information. These headers are commented out so that compilation of the program is not affected. If what you recieve is not acceptable (e.g. becomes MIME encoded because it is more than 80 columns or contains control characters), you are responsible for noticing this immediately, correcting the file, and re-submitting it. All submissions will be kept for archival purposes, but only the latest submission before the time deadline will be graded.
| Late Assignment
Policy Submissions are done by following the instructions above, which also establishes the time of submission. The due dates on assignments should be noted carefully. The work of an assignment should be conducted in the week or weeks before, not on the last day when there is no space for the necessary thinking. Help will be available throughout the week and is much harder to get on the last day because there are so many people who ignore this recommendation. Automatic GraceThere is an automatic, fixed, one-day grace period on all assignments. In other words, if the due date states day N, then the assignment must be turned in before midnight on day N+1 to receive any credit. After midnight on day N+1 work you spend on the problem is for your own edification only (which is not to say that it isn't worth doing or required; you just don't get points for it then). It is best to plan to get the assignments in on the stated due date. |
You should have a directory ~/cs60 which has group access by group cs60. If not, the system administrator will create one for you. Access to this directory will thus be by you, the instructor, and the tutors, but preferrably no one else. When properly setup the directory listing, obtained by ls -l, for this directory should look like:
2 drwxrwx--- 2 yourid cs60 512 Sep 8 20:32 cs60/
If it does not, you should execute the following command from your home directory:
chmod 770 cs60
The purpose of this directory is to be able to get help on programs without mailing the program. Simply indicate the file name to the instructor or tutor. He or she can connect to the directory and write things there. It is not necessary that you keep all of your work accessible there, just the things on which you are currently working.
The lectures will roughly follow this outline. The progression is at the rate of about one of the numbered topics below per week. I should say that this is what I would like to do. Depending on background, some of the topics expand to longer than allocated, with the result that other topics get jettisoned or fall off the end. Please keep up on the reading without it being explicitly assigned. The notes generally expand on the lectures and discussions. But the lectures may also expand on the notes or introduce new material. More often than not, several threads will be interwoven in the lectures over a period of time, in part to emphasize the commonality of concepts from different vantage points.The actual lectures will determine points of emphasis.