COSC 102
Intro to Computing II
Spring 2020
Date
Lecture Topics, Examples1 &
Exams
Lecture Readings
Lab Readings &
Handouts
Homework, Projects &
Recommended Events
Unit 0: Procedural Programming (PP) Review in Java
Writing complex programs with many helper functions
Jan 20 Half-day lecture: syllabus, readings & class process
22 Java Data Types: primitives vs. references (==/.equals())
Process: incremental development, tests suite;
codingBat demo
2.1, 2.2, 2.3, 3.2 Reading: 3.3 (up to Table 3.3)
for/conditional syntax &
String methods
Lab #1
codingBats
24 Java Programs: class, main, static; javac/java
Process: taking note
Review: for/conditional
[code main]
1.1, 1.2, 1.3, 2.4, 4.2 Hw: Problem Solving sheet

Jan 27 PP I: helper methods and scope (inner most);
actual vs. formal parameters
[code param passing]
PJ TUT 2.1, 2.2 (Java String is Special)
3.1, 1.4, 1.5
Read 7.2 & How to Pair Program?
Review CPE sections
Lab #2
array practice (in pair)
Project #1 out
Path Runner
Read Processing File: 6.2, 6.3
29 Java Structure: arrays, parameters passing primitives vs. references
[code array] [Procedural template]
4.3, 7.1, 2.5
31 Java Implementation: memory layout; immutable String
Handout: guessing game
3.3 (interactive & Scanner), 6.1, 7.3

Feb 3 PP II: Design review
Process: Managing scope with class variables and constants, global vs. local
API: Using Random, Scanner methods (console System.in and File)
[code guessing game]
5.1, 5.2, 5.3, 3.4
Unit 1: Object-Oriented Programming (OOP)
Writing a class, an interface and an abstract class; polymorphism; inheritance (IS-A) vs. composition (HAS-A)
5 Defining class: class (template) vs. object (instance)
client vs. object code, constructor: class Radio example
[guessing game refactor] (Scanner class variable)
7.5, 8.1 Read 8.2
Lab #3
OOP intro
Read Design Expectations:
4.4, 4.5, 5.4, 5.5 & 5.6
Project # 1 Milestone
DEMO in lab (Part I)

Explorer Part II
files
7 class Rational: instance variables, constructors (this redirection), instance methods, toString()
[code blank rational]
8.3, 8.4

Feb 10 class Rational cont.: getters/setters, mutable vs. immutable, equals, instanceof 8.5 Re-read 8, especially 8.4
Lab #4
credit card
12 Exam I: Procedural Programming in Java
review material available on Moodle
14 class Rational cont.: implicit parameter this, instance vs. class methods
[code rational completed]
Re-read 8 Project #1 due

Feb 17 Inheritance I: class Object, extends
Recursion review, FIX ME activity, extends Exception
[OOP_FIX ME sheet]
9.1, 9.2 Read: 7.4, 7.5
Optional Reading: 3G.1
Lab #5
silver game (in pair)
Project #2 out
19 Inheritance II: super, abstract class
class StaffMember/Employee/Volunteer.. (NGO example)
[code]
9.3
20 Inheritance III: polymorphism
[code]
9.4, 9.5

Feb 24 Inheritance IV: interface, implements, IS-A (inheritance) vs HAS-A (composition)
[code]
9.6
Unit 2: Linear Data Structures
Using and implementing ArrayList (continuous) vs. LinkedList (dynamic allocation)
Constrained Linear Structure: Stack (LIFO) vs. Queue (FIFO)
26 Using a Linear Structure: generics (parametrized type); Collections, ArrayList
[code]
10.1 Re-read 9, especially 9.3
Silver Game DEMO
Lab #6
software company


28 Implementing Linear Structure I: interface List, class ArrayList design
[code]
10.2, 15.1
Mar 2 TBA
15.2 Optional Reading: 3G.2
Lab #7
shape graphics
4 ArrayList implementation: remove/clear/set
13.1, 13.2 Project #2 due
6 "Extensible" ArrayList: ensuring capacity, i.e inner array big enough
Incrementind or doubling for reallocation
13.3, 13.4

Mar 9 Complexity Analysis: Space vs. Time Complexity; Running Time comparison
order categories; linear vs. quadratic; analyzing loops
15.3, 15.4 Re-read 13.2
Lab #8
Running Time Packet
(in group/POGIL)
11 Exam II: Object-Oriented Programming (include using ArrayList)
review material available on Moodle
13 Practice of Running time: counting copies for ArrayList array reallocation (linear vs. quadratic)
Binary search for sorted list: log n, just a big constant
11.1 Project #3 out
Read code review

Mid-Term Recess

Mar 23 Implementing Linear Structure II: Iterator implementation for ArrayList; inner-class
[code]
16.1, 12.1
Read Chapters 90 & 91
Lab #9
Sorting Packet (in group/POGIL)
TBD
25
WD
deadline
Memory allocation: ArrayList (continuous/packed) vs. LinkedList (dynamic)
LinkedList Introduction: implementing a classNode and making a chain of them
[code]
16.2, 12.2
27 Implementing Linear Structure III: LinkedList implementation; drawing diagrams
[code]
Chapter 100

Mar 30 LinkedList implementation: insertFirst, deleteFirst; insertLast/deleLast as homework
sorting, compareTo
[code]
Chapters 92, 16.3, 12.3 Re-read 16.2
Lab #10
Linked List
Apr 1 LinkedList implementation II: Generics version
Apr 3 Implementing Linear Structure IV: Iterator implementation for LinkedList 16.4, 16.5

Apr 6 Constraint Linear Structures: Stack vs. Queue
14.1, 12.6 Lab #11
8 Implementing Linear Structure V: Stack/Queue implementation with LinkedLists;
Each implementation HAS-A particular LList; delegation pattern
[code]
14.2
10 Problem solving with Stack: postponing applications 14.3, 14.4

Apr 13 Implementing Linear Structure VI: Stack/Queue implementation array based;
Circular queue
???
15 Exam III: Linear Data Structures
review material available on Moodle
Unit 3: Advanced Data Structures
HashTable and Binary Search Tree
17 Linear vs. Non-linear Structure: Binary Search with nodes
Binary Search Tree (BST), linear vs. log review
Advanced Data Structure I: hashing, hashcode() for String
17.1, 11.2 Lab #12

Apr 20 Advanced Data Structure I: Dictionary Implementation 11.3 Lab # 13
22 Advanced Data Structure I: Handling Collisions 18.1
24

Apr 27 Advanced Data Structure II: Binary Trees 17.2, 17.3
29 Advanced Data Structure III: Binary Search Trees 17.4
May 1 17.5

R May 7 Exam 12:00--2:00

1. Examples will be posted online to complement a rushed class demo. Online material are not provided to substitute attending lectures.

Readings: From textbook Build Java Program (BJP), except otherwise indicated.

CPE: Common Programming Error sections of BJP.

PJ TUT: Programming in Java Tutorial