CS 3210 Programming with Java
Semester: Fall 2014
Instructor: Sikder Rezwanul Huq, 201C Maclean Hall, sikderrezwanul-huq@uiowa.edu
Class meeting time: MW 6:30-7:45PM in 117 MLH
Office Hours: Tuesday 11:00A to noon, Thursday 10:00A 12 noon at 101N MLH, and by appointment
Textbook
Absolute Java 5/E
Savitch & Mock
Addison-Wesley/ Pearson
© 2012
ISBN: 9780132830317
Note: Many of the topics will be covered from Oracle Java Documentations (http://docs.oracle.com/javase/tutorial/).
Students are free to use any textbook they prefer to understand the materials covered in class.
Course description
This course covers the basic features of Java programming language. The topics covered include philosophy of Java, concepts of OOP (Object Oriented Programming) as applied in Java, programming basics, inheritance, packages, interfaces, exceptions, threads, streams, generics, event driven graphical user interfaces, database programming, applets etc. This course is designed for students who know how to program in a language other than Java.
Grading
Final grade will be determined by following components:
Homework assignments (25%): There will be six homework assignments during the semester. The homework problems may ask you to write codes or answer theoretical questions on different topics. Your best five scores will be counted in your final grade.
Weekly quizzes (20%): There will be one in-class or take-home short quiz in almost every week. Quizzes will mostly contain short questions.
Projects (30%): There will be two projects. The first project is intended to judge you understanding on classes and objects in Java. Second project will ask you to develop a simple but real life Java application which may use database.
Exams (25%): There will be one mid-term and one final exam. The mid-term exam is worth 12% and final exam is worth 13% of total grade.
Letter grades will be assigned roughly as follows:
A+ = 95-100 A = 90-94 A- = 85-89
B+ = 80-84 B = 75-79 B- = 70-74
C+ = 65-69 C = 60-64 C- = 55-59
D+ = 50-54 D = 45-49 D- = 40-44
F = 0-39
The instructor preserves the rights to make minor modifications in the grading scale.
Quizzes, homeworks and Projects
Quiz 1 (due on Friday 9/5 at 11:59 pm)
Homework 1 (due on Wednesday 9/17 at 11:59 pm) Homework 1 Solutions
Quiz 2 (taken in class on Wednesday 9/10) Quiz 2 Solution
Homework 2 (due on Thursday 9/25 at 11:59 pm). Files: MagicSquare.java, MagicSquareOutput.txt, StringApp.java. Homework 2 Solutions
Quiz 3 (taken in class on Wednesday 9/17) Quiz 3 Solution
Homework 3 (due on Thursday 10/2 at 11:59 pm) Homework 3 Solutions
Quiz 4 (taken in class on Wednesday 9/24) Quiz 4 Solution
Quiz 5 (taken in class on Wednesday 10/1) Quiz 5 Solution
Homework 4 (due on Thursday 10/16 at 11:59 pm)
Quiz 6 (take-home, hard copy (handwritten or typed) due before the exam on Monday 10/20)
Quiz 6 solution is posted in ICON
Mid-term exam with solutions
Project 1 (due on Friday 11/07 at 11:59 pm), here is the starter project. Project 1 Solution
Quiz 7 (taken in class on Wednesday 10/29) Quiz 7 Solution
Homework 5 (due on Thursday 11/20 at 11:59 pm)
Project 2 (due on Saturday 12/20 at 11:59 pm)
Quiz 8 & 9 Combined (take-home, due on Monday 12/08 at 11:59 pm in ICON Dropbox)
Announcements
Change in office hours for this Thursday (posted on 9/17): the office hours for Thursday (9/18) is changed to Friday (9/19) from 12 to 2pm at 201C MLH. This change is applicable only for this week.
Homework 2 description is updated (posted on 9/17).
Change in class and office location (posted on 9/29): Our classroom has been changed from 301 MLH to 117 MLH for the rest of the semester. Regular office hours will take place at 101N MLH.
Mid-term exam on Oct 20th in class (posted on 10/16): Find more information about the exam here.
Mid-term exam office hours (posted on 10/16): Monday (10/20) from 1:00 to 3:00 pm at 201C MLH.
Mid-term exam solutions updated (posted on 10/23): There were minor mistakes in the previous version.
Description of project 1 is updated (posted on 10/23).
Final exam on Dec 17th in 205 MLH from 7:30 am to 9:30 am (posted on 12/15): Find more information about the exam here.
Important links
Hello World! (taken from Ben Berman's webpage)
How to install Oracle Database in Mac OS (The VM link in this article is for 12c)
Here are instructions for mac users
Oracle Database Express Edition 11g R2 Download
Class summaries, examples and files
Week 1:
Lecture notes: Course Intro, Getting started and Object Oriented Programming Concepts.
Example programs: Byclcle.java PersonApp.java
Week 2:
Lecture notes: Variables and Arrays
Example programs: ArrayDemo.java MultiDimArrayDemo.java StackDemo.java
Week 3:
Lecture notes: Arrays (Continuation), Operator and Control Flow Statements, Numbers and Strings
Discussion on Homework 1
Week 4:
Lecture notes: Numbers and Strings, Classes and Objects Part 1 (Classes)
Example program: ExamplesSept15.java
Discussion on Homework 2
Week 5:
Lecture notes: Classes and Objects Part 2 (Objects and more)
Classes and Objects Part 3 (Nested Classes and Enum Types)
Discussion on Homework 3
Week 6:
Lecture notes: Classes and Objects Part 3 (Nested Classes and Enum Types), Interfaces
Example Programs: PointDemo (9/29) MyTestClass.java
Week 7:
Introduction to Java GUI programming using NetBeans IDE.
Discussion on Homework 4
Example project: SimpleCalculatorApp SimpleCalculatorApp V2 (with substance look and feel)
Lecture notes: Interfaces
Week 8:
Lecture notes: Interfaces Inheritance
Discussion on mid-term exam.
Week 9:
Mid-term exam in class
Discussion on exam solutions
Discussion on Project 1
Project 1 starter (PredatorPreySimulator)
Week 10:
Lecture notes: Packages Exceptions
Sample mini project: LibraryAppArray (Mini Library Management System array version)
Week 11:
Lecture notes: JDBC
Sample mini project: LibraryAppArray (Mini Library Management System array version)
Week 12:
Oracle Database 11g Express Edition intro
Developing the database version of the Mini Library Management System:
LibraryAppDB project Database script for mini library app Instructions
Database project demonstration:
AGM (This project has personal and sensitive data, so this is posted in ICON)
Discussion on HW 5
Week 13:
I/O stream example with socket programming (client server model): KnockKnockServer KnockKnockClient
Lecture notes: I/O Stream additional notes ArrayList
Discussion on Project 2
Generics (Tutorial), topics covered: Why use Generics, Generics Types, Generics Methods
Week 14:
Discussion on Project 2
Discussion of HW5 Solution
Project demonstration:
GRE PicDic: This project uses a table that contains JPanels in its cells. Some screenshots are available here. Feel free to let me know if you want to put JPanels in JTables for project 2, and if you need any help.
Lift Simulation: This project uses a timer that invokes a method in every two seconds. You may want to do something similar for Project 2. However, there are bugs in the simulation logic and everything may not work as you expect when you run it.
Generics (Tutorial), topics covered: Bounded type parameters (Generic methods and bounded type parameters), Generics, Inheritance and Subtypes, Type Inference (just the definition), Wildcards (upper bounded, unbounded, lower bounded), Wildcards and subtyping, Wildcard guidelines, Type Erasure (Erasure of generic types), Restriction on generics (just a quick look).
Java Threads:
Lecture slides
Additional notes (A quick Intro)
Thread example
Thread Synchronization example
Week 15:
Continuation of discussion on Java threads.
Final exam review
More discussion on Project 2 (Quick demo)
Quick Introduction (not included in exam): Java Applets (tutorial) Applet Example (Source code)
Quick Introduction (not included in exam): Annotations (tutorial Wiki article)