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

Announcements

Important links

       Syllabus & Tentative Schedule

       Java tutorial

       Hello World! (taken from Ben Berman's webpage)

       Download JDK

       NetBeans IDE

       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

       Java API Specification

       Foreign Keys

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)