This course will have two basic goals:
Object orientation provides another layer of abstraction beyond the creation of procedures (a.k.a. functions or methods). It not only allows you to define new kinds of data (beyond the primitive types such as int, char, float, etc.), but also to define the methods that operate on that type of data. From this basic idea comes a number of ways to extend and refine known data types, encouraging the creation well-encapsulated solutions.
We will be discussing OOP, and then using the concepts that we learn to solve increasingly complex problems, programming the solutions through well structured code. We will do the majority of our work using Java. Although there is an initial review of basic procedure programming techniques, that review will rely on the assumption of a familiarity with Java. Near the end of the semester, we will use C++ to explore some OOP concepts that are not available in Java. However, we will assume no previous knowledge of C++ when beginning this work.
The basic topics are given below, roughly in the order that will we cover them:
Java and OOP:
Data structures and algorithms:
Runtime support systems:
C++:
We will meet three times per week for a 50 minutes each. The class lectures are WF at 1 pm in SMudd 205, and the lab is M 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. 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.
The optional text for this course will be Java By Dissection by Pohl and McDowell. It should be available at the Jeffery Amherst College Store. This book will serve as a reference and reinforcement for the much of the material covered in lectures, but there will be no assigned readings or problems from the book.
There will be two types of homework:
There will be three exams:
The exams will cover material that is covered in lectures but not in projects. The time and place for the exam will be annouced when it has been scheduled for the final exam period.
Your grade for this course will be calculated based on the following forumla:
Note first that although the lab projects will likely take much more of your time and effort, both labs and exams count substantially toward your final grade. Also note that there are no participation points. This absence is not at all a recommendation that you sit quietly. To the contrary, I highly recommend that you participate in class, not because it earns you points, but because it is the best way to ensure that you are on top of the material and understand it well.
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 illness or emergency situations.
This class will move from one project to another too quickly for late submission to be regularly handled. 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).