Fall 2009 — Professor Markstrum
Course Information
- Course description
- Schedule
- Conduct and Collaboration Policy
- Items marked with a
are likely to be pending. Items marked with a
were likely already due.
- Office Hours: Always in my office (Dana 318) from 1-3 PM on Wednesdays and Thursdays. This time is reserved for office hours, so try to come in with class questions in one of those time slots. However, I am available via email most other times (but not always), drop-ins are welcome as long as the door is open, and I am happy to schedule an appointment with you (or your group) if you ask.
My full Bucknell schedule can be found on Google calendar and is also posted on my door.
- Considering skipping CS203? See this
link
for info.
- All course work and extra credit must be turned in by midnight on the
last tuesday of classes (before reading day) to be considered for course
credit. Late assignments are discussed on the syllabus.
- This page will be updated with content as it becomes available/relevant to the course. I will also send out announcements via Blackboard and tweets via Twitter (bu_csci204_f09).
Labs (These are all
Collaborative Discussion, Individual Writeup)
Lab 1 — Eclipse
Lab 2 — Subversion
Lab 3 — Debugging
Lab 4 — UML and Violet
Lab 5 — Exceptions and Javadoc
Lab 6 — Recursion
Lab 7 — Quicksort and Analysis
Lab 8 — Linked List
A text copy of the list
in case eclipse messes up the spacing in the examples.
Lab 9 — Stack
Lab 10 — Queue
Lab 11 — Priority Queue
Programming Assignments (These are marked
Group Work or Individual Work below)
The last step of each team project is to email me an evaluation of the
team work. I have access to the log files from SVN submissions which gives
me further information. If I determine that there was an issue, I may shift
up to 10% of credit from one partner to the others.
How to work effectively as a team:
- Avoid the temptation to do all the work yourself.
- Avoid the temptation to let your partners do all the work.
- Initially meet up as a team and discuss the work to be done
and your strategy.
- Schedule meeting times when you can do work together or at least discuss what has been done.
- As a team, set goals for seperate work if you plan to do any. It will keep you from repeating work that one team mate is already doing.
- When ever you sit down with the project, all of you should do an update to get the latest version of the files.
- When you do work seperately, remember to commit it so that your partners can also see this work and my logs let me know you have contributed to the project.
- When ever you do a commit, give a good comment. "Did stuff" is pointless. "Fixed a problem where the arrays were too small (me and Joe)" is very informative.
1: HighLife (Group Work) (Updated with phase 4 instructions!)
Files: Cell.java,
TestRandomArray.java
Phase 1 Due Date: 09/14/09
Phase 2 Due Date: 09/23/09
Phase 3 Due Date: 09/24/09
Phase 4 Due Date: 09/28/09 (Individual Work)
2: Robot Maze (Group Work)
Files: Mazes Tar Repository (look up tar to open it), A version of the Maze GUI I showed in class, with the two necessary Maze and Robot interfaces required to use it (again, look up tar to open it)
Phase 1 Due Date: 10/05/09
Phase 2 Due Date 10/19/09
Phase 3 Due Date 10/20/09
Grading Guidelines: Phase 1,
Phase 2
3: BO (Group Work)
Files: BO.jar
Links: GUI Javadoc
Phase 0 Due Date: 10/21/09
Phase 1 Due Date: 10/28/09 Extended: 10/30/09
Phase 2 Due Date: 11/09/09 Extended: 11/10/09
Phase 3 Due Date: 11/10/09 Extended: 11/11/09
Grading Guidelines: Phase 1,
Phase 2.
4: Web Server Simulation (Individual Work)
See my notes on the previous projects for general design and coding
guidelines.
Grading Guidelines: Phase 1 (coming soon)
Extra Credit Opportunities (These are marked
Group Work or Individual Work below)
All (normal) EC is due by midnight on the last Monday of classes in Subversion.
Each (normal) EC is worth .5 on your overall grade.
All EC must be accompanied by an email to the professor with "EC" as the subject.
- HighLife extra credit description in HighLife assignment. You have to get your project to work with the interfaces and GUI I am providing here. Show me that it works in a live product demo during office hours for credit. (Individual Work)
- Memory Robot for the Robot Project (Group Work or Individual)
Create yet another robot which is smarter than either the
random robot or the right hand robot. Have it remember where it's been and not
go down known dead ends.
If this is Group Work, turn it in inside your robot project.
Else, (Individual Work) disconnect it from your robot project and put in in your personal SVN
projects folder.
- Ackermann's function (Individual Work)
Note: The no-internet restriction means you cannot look up the solution online. You may lookup the math definition of Ackermann online (Wikipedia is fine in this case).
- Go scoring for BO for the BO Project (Group Work or Individual)
Implement the scoring scheme for the actual game of Go for your BO game. If this is Group Work, turn it in inside your BO project. Else, put a complete copy of your BO project along with the scoring extension into your personal SVN projects folder.
- GUI for Project 4: Server (Individual Work)
Create a simple GUI for the server project that displays the top twenty
elements in each queue, the total number of elements in the queue, the
current time, automates stepping through time, and has a slider for speeding up and slowing down the rate time progresses. This Sun GUI tutorial might be helpful. You
may feel free to reuse any of the GUI code I've provided you in the first
three projects.
Quiz Answers
Exam Study Guides
Exam 2 officially (unanimously) moved to Monday 11/2/09.
Exam 2 study guide
Code Examples and Handouts
- Java Info and Worksheets
- Recursion
- Analysis
- ADTs
Links