Website: http://courses.knox.edu/cs141
This course teaches problem solving on a computer. We will be using the Java programming language, but the point of the class is not just to learn Java. Rather, Java is being used as a vehicle to teach skills like problem decomposition, abstraction, and object-oriented thinking. My goal is to teach you how to express an algorithmic process in a way that a computer can understand it. Then you can use programming as a tool either in computer science or your own field.
We meet Monday, Wednesday, and Friday during 3rd period (10:40-11:50) in
SMC-A219.
We also have lab sections scheduled on Thursday during 2nd and 3rd
(9:20-10:30 or 10:40-11:50).
You should be signed up for one of these.
Our textbook is "Objects first with Java" by David J. Barnes and Michael Kolling. Its first couple of chapters are available online (here) and a copy is on reserve in the SMC library. We will follow the book fairly closely, but also cover some material from other sources. The Lectures page will tell you what sections from the text we covered in each lecture and give links to outside notes.
In this class, you will be using several tools specifically designed for learning Java.
To access the files you have on the Cat lab machines from other computers, you'll need to remotely mount your home directory. (These directions are old so let me know if you have problems.)
If you find yourself struggling in this course, get help right away. The term will move quickly and concepts in this course build on one another so you can't afford to get too far behind. Don't hesitate to come by my office or email me a question.
There is a tutor available in the Red Room (second floor of Seymour library) Tuesday through Thursday during the evening from 7-9pm. It is also possible to arrange for an individual tutor through the Center for Teaching and Learning (CTL).
Week 1: Giving instructions and putting them in code. Object-oriented programming.
Week 2: Fields, constructors, and methods. Writing test cases. Comments. Numeric types.
Week 3: Output. Booleans and conditionals. Local variables.
Week 4: Problem subdivision. Overriding. Debugging. Exam 1.
Week 5: Strings. Loops.
Week 6: Input. Collections.
Week 7: Arrays.
Week 8: Inheritence and polymorphism. Simulations. Exam 2.
Week 9: Linked Lists. Recursion.
Weeks 10 and 11: Graphical user interfaces.
Expect to work for this class; if this is one of your three classes, you should be spending something like 13 1/3 hours a week on it. (If you find yourself spending more than that, let me know...) Computer science is best learned by solving problems and writing programs so I try to give you lots of opportunities to do these things. This class will have three types of assignments.
We will have frequent homework assignments. Most will be quite short (1-2 problems) and due in only a couple of days. The intent of these assignments is to give you a chance to practice what we're covering shortly after we discuss it in class. Make sure you do them and let me know if you have any problems.
Each week, we will meet in the computer lab. There will be a handout of practice exercises for you to work on while I wander around talking with individual students. My intention is that you will be able to complete most of the exercises during each lab period, with any leftover parts becoming suggested practice. The labs will be graded based on attendance and participation so you do not have to submit anything.
There will be midterm exams on September 28th and October 22nd, plus a final exam. All the exams will be cumulative, with an emphasis on material covered since the previous exam.
Be aware that I draw my examples for lecture from student assignments. Don't be surprised if something you submit ends up projected on the screen during class. The purpose of this is to demonstrate important concepts and to provide material for discussion, not to embarrass you. I will endeavor to use these examples anonymously by removing names and any other identifying features.
You should plan on submitting all work by the due date, but I know this is not always possible. Therefore, you get two "late days" that may be used on homework assignments during the term. Each allows you to submit one homework 24 hours late without penalty. They can be used for the same or different assignments. To use them, write a note on the top of your submission. Late assignments without such a note lose 10% of their points for each 24 hours they are late. Late submissions are not accepted once solutions have been posted so let me know if you intend to work on something past its normal deadline. Individual extensions beyond these two days require extraordinary circumstances.
Regular attendance is expected, but there is not a specific penalty for missing lecture. You are responsible for your own education. This means that you need to find someone to turn in homework if you are absent on the due date and you must find a way to learn the material covered during absences. In addition, please send me an email if you will be missing class so I know what is going on.
Exams in this class must be completed individually. You are allowed to talk with others about the homework and encouraged to work together in small groups (2-3 students). Even when working together, however, you are expected to write your submission yourself and understand it completely. In addition, you must do two things:
The same policies apply to getting help from inanimate sources. If you use the web or a textbook other than the one we're using, you must cite this source. As in collaborations with another person, you are expected to write you own solution; do not copy text or code from any source. In addition, you may look at other sources for examples or conceptual help, but not actual solutions. Some problems assigned for this class may have been previously assigned to other classes, but you are expected not to deliberately seek solutions. (If you come across one accidently, let me know and I will give you a modified assignment.)
Please feel free to contact me if you have any questions about this policy.
At the end of the term, all of your work will combined into an overall course percentage based on the following weights:
| Homework | 40% |
| Labs | 10% |
| Exams | 30% (15% each) |
| Final | 20% |
Note that homework makes up a very high percentage of our course grade; this corresponds to the important role I believe working on it plays in learning the material.
The range of scores mapping to each grade will be determined at the end of the term. In general, spend your time learning the material rather than worrying about your grade, but feel free to talk with me if you are concerned about it.