600.107: Introduction to Programming

Summer Session 2006: May 30, 2006 - June 30, 2006

Contents

Basics

Catalog Description: An introduction to computer programming fundamentals using Java. Course focuses on principles of developing well-designed programs for immediate use while providing a solid foundation for more advanced object-oriented programming. Topics include variables, control structures, basic data structures, methods, class design, and others as time permits. Course homework involves significant programming (15-20 hours/week).

Prerequisite(s): Familiarity with using computers; 600.101: Computer Fluency or 600.102: Foundations of Computer Science could be helpful.

Academic Honesty: It is your responsibility to adhere to the Department Integrity Code and other applicable university regulations. Feel free to email us your questions or concerns.

Coordinates

Discussion List: cs107-discuss@bloat.org (open discussion, but you must subscribe here first)
Staff List: cs107-staff@bloat.org (to contact all of us, but only staff can subscribe)
Submit Assignment: cs107-submit@bloat.org (we grade your last submission before the deadline)

Lecture: Monday, Wednesday, Friday: noon - 2:30 pm
Location: 2 Shaffer Hall

Staff

Instructor: Peter Fröhlich
Office Hours: Monday, Wednesday, Friday, 3:00 pm - 4:00 pm
Location: 326 New Engineering Building

Teaching Assistant: Kartik Trehan
Office Hours: Tuesday, Thursday, 6:00 pm - 7:00 pm
Location: 160 Krieger Hall (aka "haclab")

Schedule (Tentative)

Here are some important notes to keep in mind while reading the schedule and preparing for the course. If you have any questions or concerns, please don't hesitate to ask!

Week 1: May 30 - June 4

Wednesday, May 31:

Friday, June 2:

Sunday, June 4:

Week 2: June 5 - June 11

Monday, June 5:

Wednesday, June 7:

Friday, June 9:

Sunday, June 11:

Week 3: June 12 - June 18

Monday, June 12:

Wednesday, June 14:

Friday, June 16:

Sunday, June 18:

Week 4: June 19 - June 25

Monday, June 19:

Wednesday, June 21:

Friday, June 23:

Sunday, June 25:

Week 5: June 26 - June 30

Monday, June 26:

Wednesday, June 28:

Friday, June 30:

Resources

Text Books

Let's start with the official stuff. The following book is required for the course. The schedule lists assigned readings from it which may show up on assignments and exams. We also reserve some time for discussing these readings in lecture.

Davender S. Malik: Java Programming: From Problem Analysis to Program Design, 2nd Edition, Thomson Course Technology, 2005. [Buy]

That said, I have to admit that I did not hear anything particularly good about this book from students. I think it's an okay book, but I am not a beginning Java programmer myself, so it's somewhat hard to judge how well the book does its job. I have, however, heard good things about the following book.

Kathy Sierra, Bert Bates: Head First Java, 2nd Edition, O'Reilly, 2005. [Buy]

The problems with this one: I have not had a chance to read it myself. It's unlikely to become the "required" text since it's (by definition) not a "regular" text book. It may make programming too much fun. :-) Of course these two are not the only options, here's a popular (but slightly outdated) text that's freely available online; there's also a shiny new 4th edition you have to buy on paper.

Bruce Eckel: Thinking in Java, 3rd edition, Prentice Hall, 2003. [Buy]

Sun also entered the fray at some point by putting together the following (pretty outdated but continually updated) tutorial, again freely available online. I like the "trails" structure a lot, but I have not used it extensively myself.

Mary Campione, Kathy Walrath, Alison Huml: The Java Tutorial, 3rd edition, Addison-Wesley, 2000. [Buy]

If you have looked at all of these and still don't like any of them, then you are of course free to choose whatever other Java text you feel like. However, the assigned readings will still be based on Malik for consistency with other offerings of this course...

Reference Books

Text books are supposed to help you learn the basics, reference books are supposed to help you work once you know the basics. There are a number of good reference books for Java, and you may want to grab one of these for the later parts of the course. However, the online documentation from Sun is also pretty good, so none of these are required. This first reference book is probably the most useful for general Java hacking.

David Flanagan: Java in a Nutshell, 5th edition, O'Reilly, 2005. [Buy]

The official language specification for Java is a good resource to have around, but you can easily access it online, no need to shell out money.

James Gosling, Bill Joy, Guy L. Steele Jr., Gilad Bracha: The Java Language Specification, 3rd edition, Addison-Wesley, 2005. [Buy]

I don't like huge books at all, so the following is a dream-come-true for me. If you want a really concise reference on Java as well as the basic parts of the Java library, this one actually fits into the proverbial nutshell. Warning: Sometimes you need to read a page 3 times before you get it, that's how concise this thing is. :-)

Peter Sestoft: Java Precisely, MIT Press, 2nd edition, 2005. [Buy]

There are probably many other useful reference books for Java, so if you think I missed a good one, please let me know and I'll add it here.

Other Books

Enter any book store and you'll find loads of books related to programming in general and to Java in particular. The "gems" are hard to find among the flood of mediocre stuff, so I decided to make some (personal?) recommendations. First, here is a concise summary of good Java programming style, inspired by the well-known classic on good English writing style.

Al Vermeulen et.al.: The Elements of Java Style, Cambridge University Press, 2000. [Buy]

If you are bored with everything we do in class, and especially if you think you know everything about Java already, this book serves up a whole menu of brain teasers for even the most hardened Java hacker.

Joshua Bloch, Neal Gafter: Java Puzzlers: Traps, Pitfalls, and Corner Cases, Addison-Wesley, 2005. [Buy]

Finally, here's a collection of very good advanced Java advice, following in the footsteps of a famous series of C++ books. If you want to take your Java skills to the next level after this course, you'll have to get this one.

Joshua Bloch: Effective Java Programming Language Guide, Addison-Wesley, 2001. [Buy]

There are probably many other useful books about programming and Java, so if you think I missed a good one, please let me know and I'll add it here.

Online Stuff

Development Environments:

Java Documentation:

Other Courses:

If you find other online resources that are helpful to you, please let me know so I can add them here. Thanks!

Previous Offerings

Assessment

Assignments (about 13): 50%
Exams (exactly 3): 40%
Participation (unknown number): 10%

Important Notes

Assignments are due when indicated on the Schedule, late assignments are not accepted. Not ever! Since assignments may be graded automatically it is important that you follow our instructions exactly as specified. If your solution to a programming assignment does not compile, you will get no credit for your solution. If your solution to a written assignment contains too many spelling errors, you wil get no credit for your solution. Starting assignments as soon as they are out is highly recommended, submitting assignments early is encouraged as well.

Exams are cumulative, closed-book, closed-notes, open-mind and cover material from assignments, lectures, and readings. You are allowed to bring a cheat-sheet that must be handed in with the test. The cheat-sheet must be in your hand-writing and must clearly indicate your name and email address. The cheat-sheet is at most one 8.5" by 11" page with notes on both sides.

Participation covers all kinds of stuff including (but not limited to) attending lectures, doing in-class exercises, taking part in discussions, helping others (without cheating of course!) in class and on the discussion list, keeping your log up-to-date, writing lecture notes, etc.

Final Grade

Each grade item is measured as a percentage relative to the highest actually achieved score for that item. Grade items in each category (Assignments, Exams, Participation) are averaged, multiplied by the weight of their category, and added together to yield your final percentage score in the course.

Your final grade is determined according to the following scale: 100-90: "A", 89-80: "B", 79-70: "C", 69-60: "D", 59-0: "F". Plus and minus grades fall at the extreme ends of these ranges, for example 89 is a "B+" grade but 88 is a "B" grade. There is no curve! There are no "I" grades either!

Updated: $Id: index.html 254 2006-06-29 13:01:43Z phf $ Validate: XHTML CSS
Copyright © 2006 Peter H. Fröhlich. All rights reserved.