Introduction
This course deepens the ideas behind computer programming that you learned in a first course, by introducing several of the core developments from the science: object-oriented design, theoretical analysis, data structures, and algorithms. We will use the Java programming language as our principal development tool, but even more than in CS I, the ideas you will learn here extend beyond Java or any single language. Object-oriented design concepts are realized in a number of popular languages: Java, C++, C#, Objective C, JavaScript, Scala, Groovy, OCaml, Ruby, and Python, to name a few. The various structures for organizing data, the algorithms that rely on these data structures, and the techniques you will learn for reasoning about a program's correctness and resource requirements extend to every language that ever has or ever will be invented.
- Prerequisites
CS 241 assumes a basic knowledge of programming and of the Java programming language, equivalent to the material taught in CS 231. No other background is assumed.
Resources
- Required Text
-
Data Structures & Algorithms in Java, 4th. Ed., by Michael T. Goodrich & Roberto Tamassia (John Wiley & Sons, 2005).
- CIS 241 Web Page
- http://www.willamette.edu/~johnfl/teaching/cs241/
It may also be possible for you to work with an older edition. However, earlier editions predate the substantial changes introduced to Java in version 1.5, and have less coverage of several of the topics that wiill shape our study.
Format of the Course (IMPORTANT: READ ME)
This course will be taught in a seminar style, with a heavy emphasis on your active participation during each class. There will be much less emphasis on lecture, if any. Specifically, class time will consist first of initial discussion and clarification of material that you have prepared beforehand, with the bulk of class time devoted to individual and group problem-solving.
- Homework
-
In addition to class preparation exercises, there will be some larger take-home assignments, given as appropriate (roughly, every week or so).
- Participation and Preparation
-
In advance of each class, you will be assigned reading and occasionally also problem sets. You will be expected to have completed these by the following class, in order to participate effectively.
- Midterm Exams
-
There will be two mid-term exams. We will discuss the format in class.
- Final Exam
-
Per the schedule, there will be a final exam. We will discuss the format in class.
Policies
- Attendance
-
To receive full credit, I expect your attendance at every class, on time, having completed the assigned preparatory work. As a seminar class, such preparation is essential, both to your own success and that of the larger classroom community.
You may take up to 2 unexcused absences. Each absence after that will cost 5% of your final grade, up to the maximum 20% participation component (see "Grading", below).
The open lab times are optional, though highly recommended.
- Late Policy
-
All homework comes with a due date, but if I haven't started grading the assignment yet, I'll still accept late work. Once graded and returned, I won't accept it.
One exception is work whose submission and presentation is a part of class time (and therefore vital to the class). Such assignments will be clearly identified, and late submissions (defined as after the start of class) will receive no credit.
That being said, do not get behind on the assignments. The material in this course is challenging, and the pace is intense: if you let yourself get behind, you will be overwhelmed. If you are having trouble, please ask for my help, as early as possible.
- Students with Disabilities:
-
Students with documented disabilities who may need accomodations, who have any emergency medical information an instructor should know of, or who require special arrangements in the event of an evacuation, should contact me as early as possible, preferably no later than the first week of classes.
- Academic Honesty:
-
I take this very seriously: a breach of academic honor will result in a failing grade for the course, and may be subject to further college sanctions. And you know what? It's incredibly disrespectful, both of our class community and of yourself. You're all grownups, and you know the difference. Don't cheat.
Collaboration: This is something of a gray area, and a common source of misunderstanding.
To clarify: Learning is usually more successful when it is done in community rather than in isolation. For both individual and team assignments, you are permitted—indeed, encouraged—to discuss course material with each other (including other groups), to evaluate, trace, debug, refute, validate, or otherwise compare each others' work, and to adjust your own work if this collaboration results in new understanding.
However, you are not free to simply mail or print identical copies of the same work, and claim that it is the work of two separate individuals/groups. This is plagiarism, and is a breach of academic honor standards (it is also extremely easy to spot, especially in a class this small). While I encourage you to learn from each other, at the end of the day, the work you submit for a grade must be yours and yours alone.
Code from outside class (texts, the Internet, etc.): As with collaboration, study of other approaches is acceptable, but you are expressly forbidden from copying such code and claiming it as your own.
If you find yourself unsure whether a form of collaboration or borrowing is acceptable, please ask me, in advance.
- Grading
Relative weights for your final grade are as follows
Assignments: 40% Participation: 20% Midterm Exams: 20% (10% each) Final Exam: 20%
Contact
- Instructor:John Lasseter
- Office: Room 402 Collins Hall
- Open Lab Times: TuTh 12:50 - 2:20 (recommended), W 10:30 - 1:30
- Office Hours: MW 2:00- 4:00, or by appointment (or just drop by)
- Phone: (503) 375-5339
- E-mail: jflasset@willamette.edu
The best way by far to get in touch with me is in person, during office hours. Any kind of class-related discussion is encouraged, whether it be a specific question about a homework problem, a request for encouragement and help getting started on an assignment, a point of confusion about the reading, or just plain curiousity about some of the further scientific directions that are possible. I am often available outside of office hours to answer questions, offer further explanation, or just to shoot the breeze. I am always available during posted hours. I encourage you to drop by.
Barring that, your best bet is by email, which I check late, early, and often. In fact, email is very often the most effective way for you to ask a question, as the effort involved in articulating what you want to ask can help clarify many things. It also makes it easier for me to give succinct replies to which you can refer later. I'm a pretty early riser, though, so don't assume I'll answer anything after 9 pm or so.
Phone calls are, frankly, lousy. You're certainly invited to call (375-5339), but it's difficult to communicate technical questions and answers clearly without reading or writing down anything. Phone messages are completely futile: don't bother.