Syllabus
Description:
A computer program is a set of instructions that a
computer can execute. Programming is the process of
creating a computer program. This course is about programming in
object-oriented programming languages and covers both introductory
and advanced topics.
Textbook:
There are three official textbooks for this course, all of which are
available on-line. They are:
Think Java
(denoted by D&M below),
Patterns for Beginning Programmers
(denoted by B below), and
The Java Tutorials
(denoted by J below). However, there are many other good textbooks
that you can use to replace these readings
or supplement them.
Outline: This course is organized as
follows (though specific topics and dates may change).
Readings are listed in the right-most column.
Topics to Understand Completely Before the First Meeting
|
Fundamentals |
Algorithms
,
Programming
and
The Programming Process
|
|
Patterns |
Updating
,
Swapping
,
Accumulators
,
Indicators
and
Indicator Methods
|
B 1,2,14,6,7 |
Part I: Object-Oriented Programming Fundamentals
|
8/21 |
Data Types and Variables
,
Literals
and
The Assignment Operator
|
D&M 2.1-2.3, 3.7 |
8/23 |
An Introduction to:
Classes
and
UML Class Diagrams
|
D&M 11.1-11.4, 4.1-4.4, 4.8-4.9 |
8/26 |
Arithmetic Operators
,
Logical Operators
,
Relational Operators
and
Arithmetic on a Circle
|
D&M 2.5-2.7, 5.1, 5.5
and
B 1-3 |
Extra Help |
Designing Classes
|
|
8/28 |
Using Objects and Classes
,
Using Strings
and
Using Members in Classes
|
and
D&M 2.8, 6.7-6.11 |
8/30 |
Arrays
and
Console I/O
|
D&M 7.1-7.5, 3.1-3.5, 3.10 |
9/2 |
Lab:
(1)
Using VSCode to Check Syntax and Style
|
Java Programming
|
9/4 |
Lab:
(2)
Using VSCode to Execute Programs
|
|
|
Lab:
(3)
Submitting Assignments to Gradescope
|
|
9/6 |
Conditions and Decisions
and
Repetition and Looping
|
D&M 5-6 |
Extra Help |
Gaining Experience Using Objects
|
|
Extra Help |
Gaining Experience with Static Attributes and Methods
|
|
9/9 |
Programming Patterns:
Conformal Arrays
,
Segmented Arrays
and
Look-up Arrays
|
B 17, 18, 15 |
9/11 |
Developing Enumerated Types
and
ArrayList Basics
|
J (enum)
|
Extra Help |
Experimenting with Enumerated Types
|
|
9/13 |
Programming Patterns:
Overloaded Methods
and
Chained Mutators
|
B 25 |
9/16 |
Exceptions
and
Packages
|
J (Exceptions)
and
J (Packages)
|
9/18 |
Examination 1
|
|
9/20 |
Basics of Testing and Debugging
,
JUnit
and
JaCoCo/EclEmma
|
JUnit
|
9/23 |
Lab:
(4)
Unit Testing in VSCode
|
|
9/25 |
Lab:
(5)
Using the VSCode Debugger
|
|
9/27 |
Objects and References
|
|
Extra Help |
Experimenting with References - Objects
|
|
9/30-10/2 |
Arrays and References
and
Parameter Passing
|
D&M 12-13 |
Extra Help |
Experimenting with References - Arrays
|
|
10/4 |
Programming Patterns:
Accumulator Arrays
,
Pluralization
and
Delimiting Strings
|
B 14,24,22 |
10/7 |
File System Basics
and
Input/Output Basics
|
J (I/O)
|
10/9 |
Examination 2
|
|
Part II: Intermediate Object-Oriented Programming
|
10/11 |
Specialization/Generalization (Derived Classes and Inheritance)
|
J (Subclasses)
|
Extra Help |
Experimenting with Specialization
|
|
10/14-10/21 |
Polymorphism through Inheritance
|
J (Polymorphism)
|
Extra Help |
Experimenting with Polymorphism through Inheritance
|
|
10/23 |
Interfaces
and
Polymorphism through Interfaces
|
J (Interfaces)
|
Extra Help |
Experimenting with Interfaces
and
Experimenting with Polymorphism through Interfaces
|
|
10/25 |
Abstract Classes
|
J (Abstract)
|
Extra Help |
Experimenting with Abstract Classes
|
|
10/28 |
Designing with Abstract Classes and Interfaces
|
|
10/30 |
Stack Traces
and
Developing Exception Classes
|
|
Part III: Recursion
|
11/1 |
Recursive Algorithms/Thinking Recursively
|
D&M 8 |
Extra Help |
Experimenting with Recursion
|
|
11/4 |
Programming with Recursion
|
|
11/6 |
Examination 3
|
|
11/8 |
Lab:
(6)
Tracing Recursive Methods
|
|
Part IV: Introduction to Collections
|
11/11 |
Parameterized Classes/Interfaces
|
Generics
|
11/13 |
Collections
|
J (Collections)
|
Extra Help |
Experimenting with Collections
|
|
11/15 |
The Iterator Pattern
and
The Composite Pattern
|
|
11/18 |
Arrays of Arrays (a.k.a. Multi-Dimensional Arrays)
|
D&M 15 |
Extra Help |
Experimenting with Arrays of Arrays
|
|
11/20 |
Subarrays Pattern
and
Neighborhoods Pattern
|
B 19, 20 |
Part V: Preparing to Move Ahead
|
11/22 |
Designing with Constructors and Factories
and
Course Evaluations
|
|
12/2-12/4 |
Static Nested Classes and Inner Classes
,
Local Classes
,
Anonymous Classes
and
Lambda Expressions
|
Nested
|
12/6 |
No Lecture - Extra Office Hours
|
|
Part VI: Final Examination
|
12/11 |
Final Examination (8:00-10:00)
|
|
Attendance at lectures is not mandatory but is strongly encouraged.
You are expected to come to class prepared to ask and
answer questions. Hence,
you should complete the readings on a topic before it
is discussed in lecture.
The syllabus includes extra help activities. These are optional self-guided, lab-like activities. It is recommended that you complete these activities but you need not submit anything and they do not contribute to your final grade (though completing them will, most likely, help you on exams/quizzes/assignments).
Dates that start with 'Lab:'
will take place in the "lab" room.
Grading:
Final grades will be based on your performance on:
exam 1 (10%)
,
exam 2 (15%)
,
exam 3 (20%)
,
the final exam (20%)
,
several homework assignments (5% total)
,
several programming assignments (20% total)
and
several quizzes (10% total).
Homework Assignments: 5 homework assignments
will be
assigned during the semester. Note that their due dates are subject
to change.
HW1
; Due: 9/8 11:59PM
(Getting Started)
HW2
; Due: 9/15 11:59PM
(Objects and Classes)
HW3
; Due: 9/22 11:59PM
(Classes and Enumerated Types)
HW4
; Due: 9/29 11:59PM
(Unit Testing)
HW5
; Due: 10/6 11:59PM
(Objects and References)
Make sure you read and understand all of the
policies related to
homework assignments.
Unless stated otherwise,
homework assignments
may be submitted
up to 1 day(s) late at a penalty of
10% per day
.
Programming Assignments: 4
programming assignments will be
assigned during the semester. Note that their due dates are subject
to change.
Make sure you read and understand all of the
policies
related to programming assignments.
Unless stated otherwise, programming assignments may be submitted
up to 1 day(s) late at a penalty of
20% per day
.
Quizzes: 10 quizzes
will be
assigned during the semester. Note that their due dates are subject
to change.
Quiz 1; Due: 8/30 11:59PM
(Operators)
Quiz 2; Due: 9/2 11:59PM
(Classes and Objects)
Quiz 3; Due: 9/4 11:59PM
(Developing Classes)
Quiz 4; Due: 9/9 11:59PM
(Loops)
Quiz 5; Due: 9/23 11:59PM
(Classes and Enums)
Quiz 6; Due: 9/30 11:59PM
(Exceptions)
Quiz 7; Due: 10/7 11:59P
(References)
Quiz 8; Due: 10/28 11:59PM
(Specialization and Inheritance)
Quiz 9; Due: 11/4 11:59PM
(Intermediate OOP Concepts)
Quiz 10; Due: 11/20 11:59PM
(Collections)
Make sure you read and understand all of the
policies related to
quizzes.
Quizzes
may not be submitted after
the due date/time (in other words, you will
receive a grade of 0 on any one
that is not submitted on time).
Office Hours:
You may meet (either face-to-face or virtually, depending
on the situation and schedule) with Prof. Bernstein during his
scheduled office hours
or you may schedule an appointment with him.
You may get help from the lab assistants as described on the
Department Wiki
.
Contact Information:
Prof. Bernstein's contact information is available on the
contact page of his
WWW site.
Course Policies:
Your are responsible for reading, understanding, and following
all
course policies.