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.
- create and test pieces of code called classes that serve as blueprints for creating objects in memory
- understand relationships between classes (compositional/inheritance) and how to exploit these relationships to enhance code minimality and re-usability
- create event-driven applications that respond to user interaction via the keyboard and the mouse
- use exceptions to protect the end user from program crashes and recover from user abuse and unforeseen circumstances gracefully
- create applications that can save state in a file and be reconstituted later
- 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.
- 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. - Introducing Java (1 wk) Here we learn how Java works, the relationship between classes and objects, and Java's type system.
- 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.
- 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.
- 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.
- Inner Classes and Lambdas(2 wks) Theseare used as as tools for building simple data structures and to create callbacks for graphical widgets.
- 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.
- 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.
- 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.
- e-mail When you send email, begin the subject line with Block yourBlock, This flags your email for priority handling. If you have seen our cloacal email queues, you will indeed believe this to be a smart idea. When submitting an assignment via email, put its name in the subject line to simplify finding it. We can bring up mail by block.
- Did I turn that in? We will maintain copies of your work. You can ask at any time to see what we have from you.
- Google Calendar Our Google calendars are available to you If you want to see us, look at it. Suggest a couple of upcoming times when we are not busy (avoid lunch) and we will put you on this calendar and write you back. The confirming email will come from our Google accounts.
- Instant Messaging If we are online, we can be pinged via Facebook chat. A Facebook group or Piazza page will exist for this class; links to these will be announced in class. We and my TAs will be admins. Informal announcements will be posted there. You can post questions, which can be answered by members members of the group. This is a great resource so use it! Just request to join.
- Snailmail Telephone, and Visiting Our offices are in the
Engineering Technology Suite; here is our contact information.
- John Morrison, Library Mezzanine, telephone: 919-416-2746
- Keethan Kleiner, 2nd Watts, telephone: 919-416-2812,
You can send snail mail to us at NCSSM, 1219 Broad Str., Durham, NC 27705.
- Grade Visibility You will get quizzes back; average them to see your quiz grade. When quizzes are done, a final average will be posted in the focus grade book. You can ask to see your "line" in the grade book at any time, as can your 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.
- Your quizzes will be averaged. This will constitute 20% of your grade. We may decide to drop the worst one if we give 7 or more.
- You will get a class participation grade of 0-10. This is 10% of your grade. When I call for a scribe, you can add to your score by successfully serving as scribe for that class. You can also gain points by appearing at the lectern to show code. Be sure you are using class time productively. Contribute to the life of the class and to its discussions.
- Tests and programming practicals will be averaged. They are 20% of your grade.
- Programs specs will supply a grading rubric.
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.