A computer can carry out operations that you request at amazing speeds. The trick is learning how to instruct the machine to do your bidding. However, that is the easy part of the trick: Learning a language (in this case, Java) by which you can instruct the machine is only a side-effect of this course. The more difficult part of the trick, and the one on which the course will focus, is determining which operations you want the machine to perform!
Given a particular problem that you want to solve, you first need to devise a solution. Then, you need to devise a sequence of operations that will carry out that solution -- that is, an algorithm. Only then can you express that algorithm as a computer program. In this course, we will tackle increasingly difficult problems for which we can create programmable solutions.
The basic topics are given below, roughly in the order that will we cover them:
We will meet three times per week for a 50 minutes each. The class lectures are MW at 1 pm in SMudd 206, and the lab is F at 1 pm in SMudd 014. Note that sometimes we will vary the use of labs and lectures in a given week -- watch the course annoucements for such changes.
You are responsible for the material presented in every lecture and lab. There is no attendance policy, but I strongly recommend that you attend all lectures. If you miss one, it is your responsibility to obtain the material that you missed.
As a text, we will use a book-in-development by Prof. Lyle McGeoch. The chapters of this book will be posted on the class web pages as the semester progresses.
There will be two types of assignments:
There will be three exams:
Your grade for this course will be calculated based on the following forumla:
Participation is a critical component of the course -- that 10% must be earned. I will call on people randomly during class. If you are unprepared for the questions, you will lose points. If you don't have an answer to a question, then you must ask a meaningful question about my question to move the discussion forward.
A project not submitted by its deadline will receive a failing grade.
If you need an extension, you must submit a written request for that extension at least 72 hours before the deadline. Exceptions will be made on a case by case basis for illnesses or emergency situations. Note that submissions are electronic and automatically timestamped; the degree to which a submissions is late will be irrelevant.
This class will move from one project to another too quickly for late submission to be regularly allowed. I will seek to grade and return your work to you quickly, and that will be possible only if all submissions are provided by the given deadlines. Those deadlines will always be explicitly and clearly stated.
I hope that this page has made clear the structure and intent of the course, and well as the expected workload and your responsibilities. By presenting this information at the onset, I hope to avoid using our valuable time on misunderstandings and negotiations.
I will be available to meet with you about the material, projects, exams, lectures, or any other aspect of the course. Simply email me and we will set a time to meet as soon as possible. You can also try to find me in my office (SMudd 406) or the Faculty Research Lab (SMudd 015). I will also regularly hold office hours in my office on MWF at 3 pm. You need not make an appointment with me during that time -- just show up.