CS 426 Syllabus




General Information

Discipline Information (including Academic Honesty, Late Work, Contact Information, etc.)

Course Objectives After taking this class, you will be able to do the following.

  1. create and test pieces of code called classes that serve as blueprints for creating objects in memory
  2. understand relationships between classes (compositional/inheritance) and how to exploit these relationships to enhance code minimality and re-usability
  3. create event-driven applications that respond to user interaction via the keyboard and the mouse
  4. use exceptions to protect the end user from program crashes and recover from user abuse and unforeseen circumstances gracefully
  5. create applications that can save state in a file and be reconstituted later
  6. know how to read and create an application programming interface

Major Topics Take note that we will be introducing the Java 8 changes in the 2014-15 school year. This will introduce some changes into this outline. However, it's still a good guide of what we will be doing.

  1. Getting Started(1 day) The students get their machines properly configured for Java. You should have an account on cs.ncssm.edu. You will also learn how to run Java at the UNIX command line.
  2. Introducing Java (1 wk) Here we learn how Java works, the relationship between classes and objects, and Java's type system.
  3. Java Objects (1 wk) Java object types are introduced beginning with strings. Students begin learning how to use the current API guide. Constructors and function name overloading are addressed. Finally, objects are seen to have state, identity and behavior.
  4. Translating Python to Java(2 wks) Students learn the internal syntax for looping and forking. Scoping differences are addressed. The students at this stage write a full-featured class. The role of static members is covered and some aspects of final objects are addressed.
  5. Inheritance, Interfaces and Java GUIs(3 wks) The students learn about the Java Swing API. Inheritance and interfaces are discussed with an extensive suite of examples. We then apply these principles to building simple GUI applications.
  6. Inner Classes and Lambdas(2 wks) Theseare used as as tools for building simple data structures and to create callbacks for graphical widgets.
  7. Exception Handling (1 wk) Exceptions are explained and then they are used to create programs that function robustly and which do not crash when unexpected events occur.
  8. FileIO (1 wk) Students learn how to get their applications to save their state in a file. Both text file IO and serialization are treated in detail.
  9. Final Project (1 - 2 wks) A capstone project is created by students working on teams that applies all of the major concepts in the class. This project is a full-featured GUI application that functions robustly and which can save its state.

Course Goal You will learn how to write a complete working application with the features you would expect in a modern computer program in the event-driven model.

Prerequisite You need to have been enrolled in CSC 424 or obtain the permission of the department. If you got a 4 or a 5 on the AP exam, this is the best starting point in the Java track.

Communication

The Best Ways to Contact Us This is directed at students and parents.

Class Materials You will get a link to the book the first day of class.

You will need to configure your box for Java development. You will need a Java Developer's Kit (version 8 and a Java IDE. We use DrJava. We will show you how to download and install what you need. You may work on a Linux, Windoze or Mac platform.

Grading

Calculating your grade Your grade is computed from a numerical score; this score is comprised of three parts: your test average, your programming projects, and your quizzes. There is also a class commitment grade. Details on each component are given below.

Our basic scale is a 90-80-70 scale; this is a lower bound and your grade might be higher. If you end up in the top 30% of a letter's numerical range, you get a + and in the bottom 30% you get a -.

Reading Quizzes We give reading quizzes because the reading is important. It makes your programming experience much more productive and more fun if you know where to start and what you are doing. It also reinforces things I say in class and it fills in gaps my classes my leave.

Our course sites will contain pages linking quizzes and tests so you can download them when they are administered.

The file extension for all quizzes is .txt. Do not submit a word-processor file! These files make a mess of things. Your course website will have a description of the specific materials addressed on each quiz or tests, as well as its date and any other instructions.

Tests There are two tests. Both are 90 minute lab practicals, in the first one you will write a single Java program with several functions. In the second, you will write a few small Java programs. You will have access to the Java API guide for both of these.

Programming Assignments Your course website will have an area listing all programming projects, with specifications and any starter skeleton code. There will be several projects of escalating complexity during the trimester.