Course Overview
Introduction to the solution of problems on a digital computer using the Java language. Object-oriented programming concepts; documentation techniques; design of test data. Writing, debugging, and running programs in an interactive computing environment. Prerequisite: CSci 41 (Fall and Spring)
Activities
The course involves three types of activities:
- Interactive classroom sessions, where students explore the basic software development foundations guided by the instructor.
- Homework assignments, which will provide an opportunity to deepen the problem solving skills acquired in class.
- In-depth midterm and final projects, through which students learn to develop interactive computer programs (including games) in ALICE and Java.
Format
Lectures
Short summaries of lectures are available online. Links will appear bellow on this site.
Week 1:
The first week the main questions are: What is computer science? What do computer scientist do? What is a computer? What is computer science? What do computer scientist do? What is a program? What is object-oriented programming? How do we solve problems using computers? What is a class? What is an object? How do you get objects to do something? What is a method? What is sequential execution? What is parallel execution?
- Lecture 1 - Course Info, Expectations, Introduction to Software Development [pdf]
(Presented on Tuesday, Aug 31)
- Lecture 2 - Introduction to Object-Oriented Programming in Alice [pdf]
(Presented on Thursday, Sep 2)Alice demos in class (click to download): Hello to our world!, Hello to our world! w/voice, Hopping rabbit
Week 2:
The second week the main questions are: What is a user-story? How do we creatively solve a problem using computers programs? How do we decompose a story? What is a storyboard? How do you turn a storyboard into a program? How do you work with subparts in Alice? How do you add comments to your Alice methods? What is a class? What is an object? What is a method? How do you create a method in Alice? How do you pass values to a method (parameters and arguments)? What is a subclass?
- Lecture 3 - Storyboarding [pdf]
(Presented on Tuesday, Sep 7)Alice demos in class: Late grades problem!
Alice Beyond Basics (highly suggested that you go over this presentation)
- Lecture 4 - Classes, Objects, Methods, Parameters, Functions, Variables [pdf]
(Presented on Thursday, Sep 9)
Week 3:
The third week the main questions are: What is Java? What is an instance method in Java? How do you invoke an instance method in Java? How to declare object variables and primitive variables in Java? What are some string methods in Java? How do you add comments to Java methods? How do you use the Java API? How to use the Java API to do simple and complex drawing in Java? How does Java handle inheritance?
- Lecture 5 - Object-oriented programming in Java [pdf]
(Presented on Tuesday, Sep 14, and Thursday, Sep 16)Read about the Secret of happiness
Week 4:
- Lecture 6 - Drawing in Java [pdf]
(Presented on Tuesday, Sep 21 and Thursday Sep 23)
Week 5:
- Lecture 7 - Flow control [pdf]
Week 6:
Week 7:
Midterm review (tue) and exam (thu)
Week 8:
continue lecture 9, Midterm Debrief
Week 9: Chapter 9
Lecture 10 - Modifying samples using ranges [pdf]
Week 10: Chapter 10,11
Lecture 11 - Modifying Pictures Using Loops [pdf]
Lecture 12 - Modifying Pictures in a Matrix [pdf]
Week 11: Chapter 11,12
Lecture 12 (cont)
Lecture 13 - Conditionally Modifying Pixels [pdf]
Week 12: Chapter 13
Lecture 14 - Creating Classes [pdf]
Week 13: Chapter 13
Lecture 14, Thanksgiving break (wed through friday)
Week 14:
Lecture 15, Working with Text [pdf]
Week 15:
cont....
Labs
Lab manuals are available online. Links will appear on this page. Each lab contains material and exercises based on the previous and current week's lectures. A laboratory instructor will be present during the lab session, to introduce each week's lab and to answer any questions that arise during the session. You are urged to try to make significant progress on the lab during the session, in order to take advantage of the available help. Some aspects of the lab will be discussed and tackled during lecture time. The rest you will complete in your own time and during the scheduled lab meeting time. Attendance at your lab session is mandatory and attendance records will be kept.
- Lab 1 - Introduction: Browsers, Servers, Alice
- Lab 2 - Program Design and Implementation: Animal Farm
- Lab 3 - Java basics: Drawing your own shapes
- Lab 4 -Objects, Variables, Methods, and Parameters in Alice
- Lab 5- Green bottles and flow control
- Lab 6 - Lists Loops and Games
- Lab 7 - Super turtle
- Lab 8 - GUI and Buttons
- Lab 9 - Methods, Testing, Elections
- Lab 10 - Games
Homeworks
- Lab assignments (solutions to the lab exercises)
- Lab reports (notebook journal that has your class/lab notes, story boards, sketches, problems and solutions to your lab report problems)
Deadline: Lab assignments are due by midnight each Saturday, unless otherwise noted. Lab reports are to be shown to your lab instructor at the beginning of each lab.
Where to submit: Lab assignments (solutions to exercises) are to be submitted electronically via Blackboard.
How to submit: Lab assignments (solutions to the exercises) must be compressed in .zip or .rar format and the filename of the compressed files mush be in the form FirstName_LastName_HomeworkNumber.zip or FirstName_LastName_HomeworkNumber.rar. An example acceptable name is Fred_Flintstone_Lab2.zip.
Quizzes
There will be several quizzes. Most Tuesday sessions will begin with a short quiz on the previous week's work.
Exams
There will be one exam:
- Midterm Exam on Thursday, October 14
Evaluation
Your final grade will be based on your grades on quizzes, homeworks, one exam, and the two projects, according to the following weights:
Quizzes 25% Homeworks 40% Lab assignments 30% Lab reports 10% Midterm Project
10% Midterm Exam
10% Final Project
15%
Course Materials
Text (Required)
Exploring Wonderland: Java Programming Using Alice and Media Computation (Paperback) by Wanda P. Dann, Stephen P. Cooper, Barbara Ericson, published by Prentice Hall; 1 edition (August 24, 2009),
ISBN-13: 978-0-13-600159-1.
This book should be available in the George Washington University Bookstore.
Handouts
Handouts will be posted regularly on the calendar schedule page. They will include:
- Lab assignments
- Projects information
- Lecture materials
Software
The ALICE v2.2, a free, open source 3D programming environment by Randy Pausch.Eclipse, a Java open development platform comprised of extensible frameworks, tools and runtimes for building, deploying and managing software across the lifecycle.
Java, programming language. Do you have Java?
Course Staff
Course director: | Rhys Price Jones | Contact: on leave |
Course instructor: | John Sibert |
Contact: sibert at gwu.edu |
| ||
GTA / Lab instructor: | Aleks Stefanofski |
Contact: astefano@gmail.com |
|
Resources & help
The best place to get help is in the labs, from the GTA.
To get help from the instructor, it's best to stop by during my office hours or ask questions during the lectures.
Getting started
- First, make sure you have an account on the machines in Tompkins 410 and the SEAS Unix system.
- Want to work at home?
- Alice v2.2 is freely available for download to most platforms.
- Java runs on most platforms: Solaris, Win-NT/XP/Vista, Linux, Mac OSX. The Java Development Kit (JDK) is free - you can download it directly from the Sun website. Download JDK 1.6 or higher.
- SEAS has a useful help page for various issues.
- Eclipse is freely available for most platforms
- It's a good idea to bookmark the javadoc pages.
- Read the Java API documentation
Java references
For more links, remember "Google is your friend"!
Java on Macs A good summary of what you need to do to get Java support for your Macintosh computer.
Time and Location
Attendance is required and attendance records will be kept.
Lectures
Tuesdays and Thursdays, 11:10am-12:25pm
1957 E ST NW B12
Labs
Tuesday 2:10 - 4:00 Tompkins 410 (section 30)
Tuesday 4:10 - 6:00 Tompkins 411 (section 31)
Projects
Create an interactive game in Alice.
Due date: October 23, 2010 (Saturday) @ midnight
In your lab sessions, Aleks will be very willing to discuss your ideas for projects with you.
The ground-rules for the midterm project are as flexible as I can be:
- It must handle at least one mouse event and at least one keyboard event.
- It must explain itself to the user so I will know what to do.
- If you "borrow" code that you have found on the web or anywhere else, that is ok AS LONG AS YOU INCLUDE A CLEAR ATTRIBUTION of where it came from. You will never be awarded credit for work that is not your own; but the attribution averts problems concerning academic integrity. If the inclusion of "borrowed" code enhances your project that is all to the good. Just don't expect credit for other people's work.
I will grade the project out of 100.
- 75 points will be awarded just for meeting the ground-rules above.
- 25 points will be awarded for:
- creativity
- imagination
- making me laugh
- scaring me
- entertaining me
- etc.
Course Schedule
Policies
- Academic Integrity policy:
Academic integrity requires that everything you turn in for this course be the result of your own efforts. Here are some specific guidelines:
- Do not hand in somebody else's work as if it were your own.
- Do not enable anybody else to violate the academic integrity policy.
- I know that many of you learn more effectively when you study together in small groups. That is excellent and to be encouraged provided that each and every partner is a full and active participant in all aspects of the work. For example, dividing up the assignment and each taking a portion is not acceptable: that is an academic integrity violation because you would be handing in somebody else's work as if it were your own. When you hand in your work, you are certifying that you were actively involved in all aspects of it (unless you clearly and specifically identify derived work, as described below). If you collaborated extensively with others in your group, then you should include the names of your partners in your documentation. Each collaborator needs to list all the names of their collaborators on their submission.
- In short: I encourage collaboration. But it must be clearly acknowledged by each participant. I don't want "joint submissions": Each student turns in their own work.
- You are welcome to use Google or any other search engine to find tips and examples of good code use. Again, remember if you use code you didn't write yourself, provide a full and correct attribution in your comments. And be absolutely certain that you understand all aspects of the code. Inability to satisfactorily explain how a piece of code you hand in works is prima facie evidence of a lack of academic integrity.
- You may obtain help from anybody concerning mechanical details of how to interact with course tools such as the Alice system, browsers, editors, documentation, Eclipse etc. There is no need to acknowledge this help.
- If you have any questions whatsoever regarding this policy, see me during office hours.
- The Academic Integrity Code will apply to this course, except as noted above. Please read through the code carefully.
- Penalties for violating the code or the policies described
here include failing this course, and are elaborated in the Academic Integrity Code.
- Accommodations: If you have a disability that may affect your participation in this course and wish to discuss academic accommodations, please contact me as soon as possible.
- Bulletin Board: Occasionally I'll post notices you can link to from the frame to the left.