Finding us Our offices are in the Engineering Technology Suite; here is our contact information.
- John Morrison, Office 6, telephone: 919-416-2746, email: morrison at ncssm dot edu
- Sam Boyarsky, Office 8, telephone: 919-416-2684, email: boyarskys AT ncssm dot edu
You can send snail mail to us at NCSSM, 1219 Broad Str., Durham, NC 27705.
Course Objectives
- You will learn how to create pieces of code called classes that serve as blueprints for creating objects in memory.
- You will learn about the relationships between classes (compositional/inheritance) and how to exploit these relationships to enhance code minimally and reusability.
- You will learn how to create event-driven applications that respond to user interaction
- You will learn how to use exceptions to protect the end user from program crashes and recover from user abuse and unforeseen circumstances gracefully.
- You will be learn to create applications that can save state in a file and be reconstituted later.
- You will learn how to read and create an application programming interface.
- Getting Started(1 day) The students get their machines properly configured for Java.
- 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 (2 wks) Inner classes are used as as a tool for building simple data structures and then are used 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.
- Programs: 50%. If the instructor decides to give quizzes, he may allocate 10% of this grade to a quiz grade so it would be 40% programs, 10% quizzes. This will be announced near the beginning of the term. Programs are evaluated with the Five Point Scale described under the Course Expectations subheading in the navigation bar. This will give you a letter programming grade we will reconvert into a number and fold into your final average.
- Midterm test, 20% Final Project 20%
- Class Commitment: 10%
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 402 or obtain the permission of the department. Generally this is granted if you have significant experience programming in a modern language.
Sources of Help If you run into difficulty, avail yourself of our help ASAP. You can send us email, drop by our offices or make an appointment a specific time. We may also announce our AIM handles in class. Some of our work service student will be available during certain hours to help you; the time and place of this service will be announced on this site when everyone is done scheduling.
Major Topics
Class Materials Obtain the book from the book room. It is
Bates and Sierra, Head First Java
Pay attention to the puzzles and exercises in the book. The do a great job of reinforcing your knowledge. You can also download the entire API guide locally on to your machine, so you can use it even if you have no internet connection. Also, there is a PDF textbook by Dr. Morrison. You should download this, as we will refer to it often. You will be given a URL in class.
You will also have access to Morrison, J, Programming in Java.
You will need to configure your box for Java development. You will need a Java Developer's Kit (version 1.6) and a Java IDE. We use DrJava; later if you wish, you may "graduate" Eclipse. We will show you how to download and install what you need. You may work on a Linux, Windoze or Mac platform.
Housekeeping Matters Handouts and notes will be posted on Dr. Morrison's website. or Mr. Boyarsky's website. We encourage you also to make class notes in the form of commented files or text files keep these on your personal drive. You are required to archive completed assignments and keep past tests or quizzes. Keeping your old assignments, tests and quizzes will allow you to figure your grade at any time; just follow the instructions laid out here. Make sure you familiarize yourself with the ground rules document; the policies spelled out in it apply in all CS classes.
Class Organization This class is at once lab and lecture. We will demonstrate coding constructs and have you try them right away. You are encouraged to bring your laptop to class and configure your machine to your liking.
Some programming projects will be individual efforts, although there will be a few joint activities (especially in pairs). You are expected to gain an active understanding of the material; this means that you need to be a full participant in class at all times. You are encouraged to share ideas and ask questions. Unless I specify otherwise, you may help each other debug code.
Programming Assignments and Other Assessments No one really understands what is going on in a programming class until they can write programs that compile and work. It's this simple: if you can't do this, you don't really understand the material. The biggest mistake made by many CS students is that they confuse an active understanding of the material with a passive understanding. Until you attempt, fuss over and debug programs, you are nowhere. Therefore, you will see work on a variety of programs.
Grading: 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. Specifics can be found in the course procedure document for your class. Those document supersede the generalities posted here. Below is a typical grading scale.
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 -.
Whoa! Back up! You are required to maintain all of your programs in in your personal drives. Do not archive the executable or .class files you generate. You are also required to keep all your graded assignments returned to you in your notebook. This is your insurance against us accidentally corrupting, destroying or misplacing your file.
Academic Honesty in this Class The department's policy on academic honesty is posted on this site and you can see it on the menu in the navigation bar; you are expected to read and understand it right away. All tests and quizzes are individual efforts. Projects may be individual or group efforts; this will always be made clear right at the beginning. Should you ever be in doubt, do not hesitate to ask.