Sikder Huq
CS 3210 · University of Iowa

CS 3210 Programming with Java

This page was migrated from my old website - here is the original page ↗.

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

Announcements

Important links

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)

I/O Streams (Tutorial link)

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: Tutorial

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)

Course files

Open the folder in Google Drive ↗