This is a fast-paced first course in Java for students with some prior programming experience, though not necessarily Java or any other object-oriented language. A strong emphasis will be placed on understanding basic fundamentals of OO design--inheritance, polymorphism, composition, programming to interfaces. and more generally on applying sound principles of contemporary software engineering and tools to real-world problems. In the latter half of the course, we will cover threads, OO design patterns, data structures like maps, collections, and trees, as well as Java libraries such as java.util.concurrent, and javax.swing. The course format is both lecture and lab. We will use be using Git to facilitate our learning and to manage our projects. By the end of the quarter, students will have a working knowledge of Git and know how to manage both local and remote repositories.
See the schedule for details.
Lectures | Monday 5:30pm–8:30pm, Ryerson 277 |
Communication |
We'll use Piazza for general discussion and questions about course material. Piazza is the best place to get help quickly. The TA's and I will monitor Piazza as frequently as possible and often be able to answer immediately. Students are encouraged to help their peers on Piazza by contributing when it is convenient. |
Textbook |
We will be using "Big Java: Late Objects" by Cay Horstmann. ISBN: 978-1-118-08788-6. You may purchase this book as either a paperback textbook or as an eBook. |
Course Software |
Java SDK (8): http://www.oracle.com/technetwork/java/javase/downloads/index.html/ IntelliJ: https://www.jetbrains.com/student/ Git: http://git-scm.com/downloads/ |
Getting Help |
I will be available during office hours after class each Monday. The pace of this course is rapid, so please email me or come to office hours if you feel you're falling behind or need help. |
Project | Short Description | Due Date |
---|---|---|
_01Control | _01Control is a collection of solutions to simple canonical problems related to flow control and implemented using the command-line. |
Sunday April 2 at 11:59pm |
_02Arrays | _02Arrays is similar to proControl, but requires you to use single and multi-dimensional arrays to solve the problems. This project is also implemented using the command-line. |
Sunday April 9 at 11:59pm |
_03Objects | _03Objects is an introduction to Objects and Classes in Java. You will use the tools to create object-oriented programs. |
Sunday April 16 at 11:59pm |
_04Interfaces | _04Interfaces is an introduction to interfaces and polymorphism. You will create several programming projects to demonstrate your knowledge of these concepts. |
Sunday April 23 at 11:59pm |
_05Dice | _05Dice is a dice game that you will implement using Swing. You will use both Swing and object-oriented programming to complete it. |
Sunday April 30 at 11:59pm |
_06Design | _06Design is focused on Object-Oriented Analysis and Design. We will look at the procedures for writing the specification for a Java program, and then program several projects. |
Sunday May 7 at 11:59pm |
_07BlackJack | _07BlackJack is a black-jack game that you will implement using Swing and will be similar to proDice only more difficult. |
Sunday May 14 at 11:59pm |
_08Final | _08Final is the final project. More information about your final project will be coming shortly. | Sunday June 4 at 11:59pm |
Exam | Length | Exam Date |
---|---|---|
Midterm exam | 60 minutes | Monday April 24th |
Final exam | 60 minutes | Monday May 22nd |
There are no make-up exams in this class. Exceptions will only be made in case of a medical emergencies.
Weight | |
---|---|
_01Control | 5% |
_02Arrays | 5% |
_03Objects | 5% |
_04Interfaces | 5% |
_05Dice | 5% |
_06Design | 5% |
_07BlackJack | 5% |
_08Final | 20% |
Midterm exam | 20% |
Midterm exam | 20% |
Class participation | 5% |