My office phone number is 496-6246 (8am-5pm), and my home phone number is 643-9644 (6pm-10pm). Please do not call me after 10pm, or before 10am on weekends.
By far the best way to reach me (or anyone on the course staff) is via email. My email address is ellard@deas (yes, that's deas, not fas). The email address of the course account is lib50@fas.
email is also the easiest way for me (or whoever your TF is) to get information to you. Please check your mail at once a day or so during the week.
Note that my section and office hours will be listed on my home page.
Course handouts are available in the filing cabinet outside Professor Kernighan's office, which is Pierce 110D. If you miss a lecture (or we run out during lecture), you should try to get a copy of the handouts and go over them before the next lecture.
If you're setting up your account for the first time, make sure that you choose a good password. Don't choose words from the dictionary, any variations on your name, nickname, home town, or anything else that a malicious person could ever guess. It should be nonsense, and contain a mix of letters, numbers and punctuation.
Once you've chosen your password, never share it with anyone else. Don't tell it to anyone, under any circumstances. This is a very, very serious matter. If someone tells you that they need your password in order to do some administrative or course-related task, they are lying (or at best, simply don't know what they're doing). Report them at once to the proper authorities.
The first assignment contains instructions for sectioning, but you'll need to have a UNIX account in order to run the sectioning program. Please section no later than 5:00pm Friday, 9/20!
Note that the lateness policy for this course is slightly complicated, but reasonable. Please make sure that you understand it, so that you're not surprised by it later. If you have any questions about the lateness policy, ask me.
Although you need to do your coursework on one of these machines, you can do so from practically any machine you want. If you've got a Macintosh or PC in your dorm room, you can use these to connect via the network to the HPs.
Note: You should invest the time to learn vi (or whatever text editor you choose) very well at the beginning of the semester. Most editors have powerful features that will help you later in the semester.
It might be tempting to use a bare-bones text editor (such as pico), but you'll kick yourself three or four weeks from now. These editors are simply not suitable for serious programming.
When you run cs50-submit, it asks for the name of the project that you are submitting, and the name of the directory to submit.
Note- you should only run cs50-submit once you're ready to hand in the entire assignment- don't submit each piece as you finish it.
Each homework assignment will include instructions about what you need to hand in, and how to go about it- please follow these instructions! Keep in mind that you will also need to hand in printouts as well as submitting your files.
For example, here's what the dialog with cs50-submit might look like for assignment 1. The parts you would type are shown in italics:
Welcome to the CS50 submission program. What project are you submitting? asst1 What directory would you like to submit? asst1 Submitting the following files and/or directories: asst1/hello.c ...
A few of the programs that you'll use, such as cs50-submit, checkin, and checkout, were written specifically for this course. To learn about these programs, consult the online manual pages and the course handouts.
The good news is that once you are familiar with these commands, you will have learned most of the UNIX commands that you really need to know for this course. We're not going to make you learn a dozen new UNIX commands every week (instead, we'll soon move on to the real goal of this course- learning Computer Science). However, it is necessary to learn the basic skills of using these computers in order to progress on to bigger and better things.
For example, the command
will display the contents of the file named .cshrc in your home directory (no matter what directory you happen to be in at the moment).
In general, a twiddle followed by a username represents the home directory of that user. For example, ~lib50 is another name for the home directory of the lib50 account (a place where you will be getting a lot of files from during the course of the semester).
For example, the command
cp ~lib50/assigns/asst1/* .
copies all the files in directory ~lib50/assigns/asst1 into the current director.
For example, the command
changes the current directory to be the parent of the current directory.
Your home directory (and everyone else's) is a distant descendant of root. You own the files and directories in your directory, but you don't own the parent directory of your home directory, or any other of its descendants.
Make sure that your algorithms are both clear and concise. You do not need to go into minute detail, but you do need to clearly state your assumptions and the steps that your algorithm takes in order to reach its goal.
Remember that in general, an algorithm must be:
An algorithm must be stated clearly and unambiguously. With computer languages, this is not usually much of a problem (although it can be). In English, this can be quite hard, as we saw in the first lecture.
The algorithm must always correctly compute whatever it is supposed to compute without error or failure. Programs that make your PC or mac crash are often examples of precise but incorrect algorithms.
The computation must complete within a finite amount of time and only consume a finite amount of other resources (RAM, disk space, etc).
Dan Ellard <firstname.lastname@example.org>