Skip to main content

CISC 3120 Design and Implementation of Software Applications I

Spring 2018

by Professor Hui Chen, CUNY Brooklyn College

Section MW8

Class Meeting: 08:00 - 09:15am, Monday and Wednesday
Classroom: Room 130 Ingersoll Hall Extension (IA-130)

Section MW2

Class Meeting: 02:15 - 03:30pm, Monday and Wednesday
Classroom: Room 130 Ingersoll Hall Extension (IA-130)

Course Schedule

Topics: Discuss the policy of the class; provide an overview of the class; form student teams; introduce toolkit for the class including setting up Git, Github, JDK, Eclipse, and Eclipse project setup.

Lecture Notes
Assignment
Individual: Practice W01-1_01-29: set up a Github repository and make a submission. Due at Github before the class, Wednesday, January 31.
Team: Project 0: set up Github repository and make submissions. Due at Github before the class, Wednesday, January 31.
Reading
Resources

Topics: Introduce the concept of the Java technology; review a few concepts (class, object, and package) in Objected-Oriented Programming in the context of the Java programing language; introduce a brief history of the Java programming language; write and compile a simple Java program; review the concept of class and object, discuss Java class and object; command-line arguments; text-based application interface.

Lecture Notes
Assignment
Team: In-Class: Practice W01-2_01-31_0: What did we learn from BeerSong.java?
Individual: Practice W01-2_01-31: Oops! Do I have a bug? Due at Github before the class, Monday, February 5.
Individual: CodeLab: 20515. Due at CodeLab before the class, Monday, February 5.
Reading
Resources

Topics: Review briefly some flow control concepts and OOP concepts; discuss Java primitive data types and reference types; review the main method and the command line arguments; provide an introduction to Java garbage collector.

Remark: Additional discussion on flow control is in C05

Lecture Notes
Assignment
Individual: CodeLab: 20528, 20543, 20510, 20511, 20570, 20571, 20531, 20991, 20593, 20615, 20993, 60124, 20516, 20589, 20578, 20627. Due at CodeLab before the class, Monday, February 12.
Reading
Resources

Topics: Discuss Java methods and arguments, and reference variables as method arguments; find answers online to problems; and introduce Eclipse and Maven.

Lecture Notes
Assignment
Individual: Practice W02-2_02-07: Pass-by-Value. Due at Github before the class, Wednesday, February 14.
Individual: CodeLab: 20651, 20653, 20661, 21134, 20579, 20580, 20581, 20583 Due at CodeLab before the class, Wednesday, February 14.
Reading
Chapter 4 of the textbook
The Java Tutorial: Defining Methods
Resources
The college is closed to observe Lincoln's Birthday according to the College's Term Schedule.

Topics: Discuss flow controls, i.e., selection and iteration in Java

Lecture Notes
Assignment
Individual: Practice W03-1_02-14: Control Execution Flow. Due at Github before the class, Tuesday, February 20.
Individual: CodeLab: 20930, 20926, 20676, 20680, 20684, 21021, 60129, 60130. Due at CodeLab for the class, Tuesday, February 20.
Reading
Reading: Chapter 5 of the textbook
The Java Tutorial: The for Statement

Conversion day: classes to follow a Monday schedule, which means, we have a class today, a Tuesday.

Topics: Introduce the Java library; use Java API documentation; use 3rd party Java libraries; discuss arrays and lists in the context of data structures; discuss lists in the context of Java Collections API.

Lecture Notes
Assignment
Individual: Practice W04-1_02-20: Array, ArrayList, and more? Due at Github before the class, Tuesday, February 26.
Individual: CodeLab: 20606, 20969, 20968, 20713, 20717, 20659, 21112 Due at CodeLab before the class, Tuesday, February 26.
Individual: Take-Home Test 1 and Review #1
Reading
Resources

Topics: Introduce concept of software validation and verification; discuss testing and JUnit, a unit test framework for Java; discuss examples of JUnit tests; and discuss roadmap of class projects and the project 1 assignment.

Lecture Notes
Assignment
Team: Project 1: Develop a usable (text-based) command-line Java application. Due at Github before the class, Monday, March 5.
Individual: Practice W04-2_02-21: Improving quality via testing. Due at Github before the class, Tuesday, February 26.
Reading
Resources

Topics: Review concept of inheritance and polymorphism; discuss Java inheritance and polymorphism

Lecture Notes
Assignment
Individual: Practice W05-1_02-26: All kinds of shapes Due before the class on Wednesday, February 28.
Individual: CodeLab: 20947, 21122, 21129, 20774, 20752, 21132, 21095, 21117 Due before the class on Monday, March 5.
Reading

Topics: Review concept of abstract classes; discuss Java interfaces and abstract classes.

Lecture Notes
Assignment
Individual: Practice W05-2_02-28: Abstract Classes and Interfaces. Due before the class Wednesday, March 7.
Individual: CodeLab: 21100, 21101, 21162, 21166, 20753. Due before the class Wednesday, March 7.
Reading
Chapter 8 of the textbook
Resources

Topics: Discuss program data, memory management in JVM, Java constructors and Java Garbage Collector

Lecture Notes
Assignment
Individual: CodeLab: 20633, 20635, 20636, 20760, 21125, 21126, 20751, 21116. Due before the class Monday, March 12.
Reading
Chapter 9 of the textbook
Resources

Topics: Discuss user interfaces; contrast text-based user interface and graphical user inerface; discuss GUI and GUI applications; discuss event-driven programming; provide a first exposure to Java FX for desktop applications.

Lecture Notes
Assignment
Team: Project 2: Inheritance and Polymorphism. Due at Github before the class, Wednesday, March 21.
Individual: Practice W06-2_03-07: GUI and Event Registration. Due before the class Wednesday, March 14
Individual: CodeLab: 60237, 60238, 60239, 60232. Due before the class Wednesday, March 14
Individual: Take-Home Test 2 and Review #2
Reading
Resources

Topics: Conduct project activities in team; and provide a brief recap for the midterm exam

Lecture Notes
Assignment
Team: Project Activities
Team: Project 3: GUI Desktop application. Due at Github before the class, Wednesday, April 18.
Individual: Take-Home Test 3 and Review #3

Topics: Midterm Examination

Topics: The College canceled the class due to the inclement weather.

Topics: Introduce observer pattern; discuss concurrency in JavaFX; introduce Java threads and JavaFX tasks; discuss application of observer pattern in JavaFX in the context of JavaFX concurrency and tasks; and discuss JavaFX properties and bindings in the context of the observer pattern.

Lecture Notes
Assignment
Individual: Practice W09-1_03-26: Dealing with Dependencies and Concurrencies. Due by midnight Friday, March 30.
Reading
Resources

Topics: Styling JavaFX with CSS; FXML; Model-View-Controller architecture style; discuss exception and error handling in Java.

Lecture Notes
Assignment
Individual: Practice W09-2_03-28: CSS, FXML, and MVC. Due by midnight Friday, March 30.
Individual: CodeLab 03/28: 60208, 60209, 60216, 60217, 60214, 20763, 20790, 21176, 21169, 21189, 21187, 21183, 21175, 21186. Due by midnight Friday, March 30.
Reading
JavaFX: Mastering FXML Skinning JavaFX Applications with CSS
Chapter 11 (exception and error handling) of the textbook
Resources
March 30 - April 8, Friday-Sunday, Spring Recess
March 30 - April 8, Friday-Sunday, Spring Recess

Topics: File system trees, traversal of file system trees, path, file, I/O streams (byte stream, character stream, data stream, object stream), File I/O with streams, formatted and unformatted I/O, character encoding and character set, locatel and formatted I/O, buffered and unbuffed I/O, sequential and random access.

Lecture Notes
Assignment
Individual: Practice W11-1_04-09: File I/O. Due at Github before the class, Wednesday, April 18.
Individual: CodeLab 04/09: 20764, 20771, 21193, 21197, 21198, 21206, 21209, 21222, 21201, 21204, 21218. Due at CodeLab before the class, Wednesday, April 18.
Reading
Resources

Topics Introduce networking fundamentals including OSI model and TCP/IP model, characteristics of communicational channels, networking application architecture, Berkeley sockets with TCP, and object serialization.

Lecture Notes
Assignment
Individual: Practice W12-1_04-16: Reliable streams with sockets. Due at Github before the class, Wednesday, May 2.
Reading
Chapter 15 (networking section) of the textbook
Resources

Topics: Discuss concepts of unicast, broadcast, and multicast; discuss user datagram and datagram sockets; discuss datagram sockets for unicast, broadcast, and multicast.

Lecture Notes
Assignment
Individual: Practice W12-2_04-18: Network I/O and Multicast. Due at Github before the class, Wednesday, May 2.
Reading
chapter 14 (serialization) of the textbook
Chapter 15 (networking section) of the textbook
Resources

Topics Introduce to asynchronous I/O and concurrency; discuss Java Threads and asynchronuous I/O and their application in networking and GUI applications.

Assignment
Individual: Practice W13-1_04-23: Asynchronous I/O, Threading, and Networking Due at Github before the class, Monday, May 7.
Team: Project 4: Network and Concurrency. Due at Github before the class, Monday, May 7.
Reading
Chapter 15 (multithreading) of the textbook
Resources

Topics: Introduce and review a few design patterns including static factory method, factory pattern, builder pattern, and observer pattern; discuss design patterns in Java API

Lecture Notes
Assignment
Individual: Practice W13-2_04-25: Design Patterns. Due at Github before the class, Monday, May 7.
Individual: Take-Home Test 4 and Review #4
Resources

Topics: Introduce Web application and architecture; review client/server architecture; discuss multi-tier application architecture; discuss and review XML, HTML, and CSS; and introduce JavaScript and libraries and framework.

Resources

Topics: Discuss URI, URN, and URL; discuss HTTP; experiment with URL and HTTP; programming with simple Web services.

Assignment
Individual: Practice W14-2_05-02: URL and Simple Web Service. Due at Github before the class, Wednesday, May 9.

Topics: Discuss passing data and parsing returns for the Web; Introduce the Spring Framework; discuss the evoluation of Web applications and development; discuss Spring MVC.

Assignment
Individual: Practice W15-1_05-07: Passing Data and Parsing Returns. Due at Github before the class, Monday, May 14.

Topics: Discuss Spring Web Controller; discuss simple data store;

Assignment
Team: Project 5: Web Application
Individual: Practice W15-2_05-09: Implementing Simple Web Service. Due at Github before the class, Monday, May 14.

Topics: Final review; Q&a.

Section MW8: 8 - 10AM, Wednesday, May 23, IA 130
Section MW2: 1 - 3PM, Thursday, May 17, IA 130
The College's Schedule for Final Examination