CS 259 - Data Structures with Java
Computer Science Department
University of New Mexico
Fall 2009
|
|
Instructor:
Joel Castellanos
Department of Computer Science
e-mail: joel@unm.edu
Office: Farris Engineering Center (FEC) 321
Building #119 in section I-2 of the
campus map.
Office hours (Fall 2009):
Tues & Thurs: 11:00 AM - 12:30 PM and by
appointment
Course Description
This is an introductory Java programming course that moves at an accelerated pace covering the material in both CS-152L (Computer Programming Fundamentals) and CS-251L (Intermediate Java Programming) in 5 credits in one semester. The breath of the course is similar to CS-152L and CS-251L, but the depth of the programming projects requires more problem solving skills and creativity.
The class begins with a "Hello World" program written in Java using the Eclipse Integrated Development Environment (IDE). This is the same IDE used in CS-152 & CS-251. A full syllabus is given below.
There are no formal prerequisites for this course.
Any one of the following students would be a good candidate:
- Someone who has studied Java in school, on a job or is self-taught,
but does not feel ready to skip CS-152 and take CS-251.
- Someone who has solid programming experience, but does not
know anything about Java. For example, a person who knows C or
FORTRAN well enough to write a program that calculates the first
50 prime numbers would probably be board in CS-152, but, without
any Java experience, would be lost
on day-one of CS-251. Such a student would be well advised to take
this course.
- An engineering, science or math student with junior or senior standing who
generally gets As or Bs. Even if that
student has never taken a programming class, he or she would probably find
this class more interesting and appropriately challenging than the
CS-152 & CS-251 series.
- Calculus is not required or used in this class, but a student,
straight out of high school, who found AP calculus and AP physics
fairly easy would be much happier in this class than in CS-152 & CS-251.
This course is limited to 20 students. It takes place in a computer lab with a mixture of lecture and programming time.
Text Book
|
Core Java: Volume I - Fundamentals (8th Edition) (Sun Core Series)
by Cay S. Horstmann, and Gary Cornell
ISBN-10: 0132354764.
|
Syllabus
- Week 1:
- The student will be able to describe generally what a programming language is, and some of the advantages and disadvantages of Java. Using the Eclipse Integrated Programming Environment, the student will be able to create, compile and run a Java project that reads simple, text input and produces simple text output. The student will also be able to locate the produced source and object files on the file system (chapters 1, and 2).
The student will be able to use Eclipse to create a Java program that performs simple arithmetic calculations using the Java types short, int, long, float and double. The student will be able to use control flow such as Java’s while, for, and if statements to perform iterative algorithms that calculate simple mathematical sets such as all odd numbers within some given range, all prime numbers within some given range, and the prime factors of a given integer. Students will be able to debug such programs using both text output of intermediate calculations and using basic features of Eclipse’s integrated debugger (chapter 3).
- Week 2:
- The student will be able to handle exceptions (try/catch), and manipulate Java String objects by performing concatenation, substring extraction, conversion to and from numerical data types, and both case-sensitive and case-insensitive lexicographical ordering. The student will also be able to customize Eclipse to display fonts, colors, indenting and other aspects of coding style (chapter 3).
- Week 3:
- The student will be able to use Eclipse to create a Java program that reads, changes and writes text data from and to a file system. The student will also be able to store and extract data from a one-dimensional array, and to apply the use of an array (chapter 3).
- Week 4:
- The student will be able to describe the basic properties of Object Oriented Programming (OOP). The student also will be able to use Eclipse to write a Java program that defines different objects, instantiates multiple instances of each object, defines and uses getter and setter methods to manipulate both static and instance fields of the objects and applies those skills to a problem such as setting up a simple employee database (chapter 4).
- Week 5:
- The student will be able to use Eclipse to create and display a JFrame object that uses the review topics of text input, variables, and control flow to render line graphics on a JPanel object (parts of chapters 5, 6, and 7).
- Week 6:
- The student will be able to create a Java Swing application that renders and appropriately responds to Graphical User Interface (GUI) components such as the JButton, JLabel and JTextField. The student will be able to create a Java Swing application that renders and appropriately responds to GUI components such as check boxes, radio buttons, menus, and sliders (chapters 8 and 9).
- Week 7:
- The student will be able to apply previous skills to a artificial life simulation.
- Week 8:
- The student will earn an A on the midterm exam.
- Week 9:
- The student will be able to apply previous skills to a fractal drawing program.
- Week 10:
- The student will be able to correctly apply standard Java collection classes such as Linked Lists, Array Lists, and Tree Sets. (chapter 13)
- Week 11:
- The student will be able to apply Java data structures to solve an interesting problem.
- Week 12:
- The student will be able to apply previous skills to create a simple game.
- Week 13:
- The student will be able to add some artificial intelligence to his or her game.
- Week 14:
- The student will be able to create and debug a multi-threaded GUI application using various methods of data synchronization (Chapter 14).
- Week 15:
- The student will be able to add multi-threaded capability to his or her game.
- Week 16:
- The student will be able to compete in an AI game tournament.
- Week 17:
- The student will earn an A on the final exam.
Grading
| Midterm Exam |
15% |
| Final Exam |
15% |
| i-clicker quizzes |
10% |
| Labs |
30% |
| Projects |
30% |
Attendance is required for both i-clicker and lab grades.
Class Notes:
- Introduction
-
Using the Eclipse IDE to write "Hello World" (updated Sept 29)
-
Basic Syntax and Control Flow (updated Sept 29)
-
Loops and Nested Loops. Lab 1 Assignment.
-
CS-259 Coding Standards. (updated Sept 29)
-
Prime Numbers and Factors. Lab 2 Assignment.
-
Primitive Types.
-
Roulette, and Random Numbers.
-
Method Parameters (updated Sept 18)
-
Bubble Sort: on int[ ], Employee[ ], and Comparable[ ]. Lab 6 Assignment. (updated Sept 18).
-
My First GUI
- Project 2: Breakout
-
Midterm Exam Review
-
Numerical Integration and lab 10
-
Stacks
-
Javadoc and Lab 11
-
Inheritance
-
Pascal's Triangle
-
Breakout Milestone 4: The Game
-
L-System Project Milestones 1 and 2: Deterministic Context-Free Languages
-
L-System Project Milestones 3 and 4: Graphical Interpretation of Symbols in Deterministic Context-Free Languages
-
Java Collections: ArrayList and Lab 13