Course number: 51036 Location:Ryerson 251 Time: Monday 5:30pm-8:30pm Professor: Adam Gerber, PhD, SCJP
Email: gerber@uchicago.edu
Bitbucket: csgerber
Office: Ryerson 251
Office Hours: Mondays 8:30pm to 10:30pm - directly after class
TA: John Hadidian-Baugher, email: jhadidianbaugher@gmail.com, bitbucket: johnhb Office hours: 5-7pm on Wednesdays at Gleacher Center Cafeteria
Grader: Jonathan Ma, email: majonathany@gmail.com, bitbucket: majonathany
Content: | All the course content, including; videos, slides, projects, and labs are all located here (http://gerber.cs.uchicago.edu/java/content/)
|
IDE: | We will be using IntelliJ Ultimate Edition as our IDE. IntelliJ is an intuitive, feature-rich, and extremely forgiving IDE available on all major platforms. Get the keymap here: (~/content/slides/ij_keymap_mac.pdf or ~/content/slides/ij_keymap_pc.pdf). Download/install IntelliJ here: https://www.jetbrains.com/student/ Use your .edu address and be sure to download and install the ULTIMATE edition (not the community edition) |
Local source-control: |
We will be using git throughout this course. Git is an outstanding, distributed source-control tool and fast becoming the de-facto standard in software development. IntelliJ has an excellent built-in git-gui tool. Download/install Git here (http://git-scm.com/downloads/) |
Remote source-control | We will be using Bitbucket for grading your projects. Please (sign-up for and) register your bitbucket account here (https://forms.gle/GyJ19yVqkzneQdTy7) I recommend you use your .edu email address for bitbucket. Doing so will give you academic benefits including unlimited private repos. If you already have a bitbucket account under your gmail or other email, simply add your .edu address as a secondary address and you will qualify for academic benefits. |
Textbook |
We will be using "Big Java: Late Objects" 2nd Edition by Cay Horstmann. ISBN: 978-1119330455. You may purchase this book as either a paperback textbook or as as kindle.
Paperback: https://www.wiley.com/en-us/Big+Java%3A+Late+Objects%2C+2nd+Edition-p-9781119321071 |
Slides | Slides are available in powerpoint format. They are located in: content/slides/. There are directories with previous quarters' slides, so you can see what was presented in previous quarters. I don't anticipate too much change in the slides this quarter. |
Labs | During labs, we will use the course tools to create applications together in class. All the source code that you will need to follow along during labs will be available in a single repository called labJava. The lecture hall will be outfitted with power-strips, and you are required to bring your own laptop and follow-along during labs. Labs are not evaluated.The labJava project (which contains hundreds of code snippets, programs, and examples, covering everything from primitive data conversion to concurrent programming is located here: https://bitbucket.org/csgerber/labjava |
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 Oct 13 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 Oct 20 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 Oct 27 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 Nov 3 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 Nov 10 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 Nov 17 at 11:59pm |
_07Streams | _07Streams is focused on the Java8 api, including lambdas, streams, and functional programming. Recursion is also convered in this section. | Sunday Nov 24 at 11:59pm |
_08Final | _08Final is the final project. For your final project, you will create a multi-threaded game which extends base-code that will be provided to you. The game-engine is flexible and highly extendible, and you may create a wide variety of arcade-style 2D games such as Asteroids, Missile Comand, 1941, etc. | Thursday Dec 5 at 11:59pm worth 20% of final grade |
Exam | Length | Exam Date | Grade |
---|---|---|---|
Quarterterm exam | 30 minutes | Monday Oct 21st | 10% of final grade |
Midterm exam | 60 minutes | Monday Nov 11th | 25% of final grade |
There are no make-up exams in this class. If you miss the quarter-term, the points are added to your midterm exam which would be worth 35% rather than 25% of final grade. If you miss your mid-term exam, the midterm-exam points are added to your final project weight making the final project worth 45% rather than 20% of the final grade. If you miss both quarter-term and mid-term exams, you can not pass this course. Late registrants may be exempt from the first one or two projects (depending upon how late they register), however those minor-project points are then added to the weight of the final-project (_08Final).
Weight | |
---|---|
_01Control | 5% |
_02Arrays | 5% |
_03Objects | 5% |
_04Interfaces | 5% |
_05Dice | 5% |
_06Design | 5% |
_07Streams | 5% |
_08Final | 20% |
Quarterterm exam | 10% |
Midterm exam | 25% |
Class participation | 10% |