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/23 |
Data Types and Variables
,
Literals
and
The Assignment Operator
|
D&M 2.1-2.3, 3.7 |
8/25 |
An Introduction to:
Classes
and
UML Class Diagrams
|
D&M 11.1-11.4, 4.1-4.4, 4.8-4.9 |
8/28 |
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/30 |
Using Objects and Classes
,
Using Strings
and
Using Members in Classes
|
and
D&M 2.8, 6.7-6.11 |
9/1 |
Arrays
and
Console I/O
|
D&M 7.1-7.5, 3.1-3.5, 3.10 |
9/4 |
Lab:
(1)
Using Eclipse to Execute Programs
and
Submitting Assignments to Gradescope
|
Java Programming
|
9/6 |
Conditions and Decisions
and
Repetition and Looping
|
D&M 5-6 |
9/8 |
Lab:
(2)
Gaining Experience with Static Attributes and Methods
|
|
Extra Help |
Gaining Experience Using Objects
|
|
9/11 |
Basics of Testing and Debugging
and
EclEmma
|
J (enum)
and
EclEmma
|
9/13 |
Overloaded Methods
and
Chained Mutators
|
B 25 |
9/15 |
Developing Enumerated Types
and
ArrayList Basics
|
J (enum)
|
Extra Help |
Experimenting with Enumerated Types
|
|
9/18 |
Programming Patterns:
Conformal Arrays
,
Segmented Arrays
,
Look-up Arrays
and
Truncation
|
B 17, 18, 15, 5 |
9/20 |
Examination 1
|
|
9/22 |
Exceptions
and
JUnit
|
J (Exceptions)
and
JUnit
|
9/25 |
Lab:
(3)
Unit Testing in Eclipse
|
|
9/27 |
Annotations
,
Assertions
and
Unit Testing, Coverage and JUnit Revisited
|
|
9/29 |
Lab:
(4)
Using the Eclipse Debugger
|
|
10/2 |
Objects and References
|
|
Extra Help |
Experimenting with References - Objects
|
|
10/4 |
Arrays and References
and
Parameter Passing
|
D&M 12-13 |
Extra Help |
Experimenting with References - Arrays
|
|
10/6 |
Packages
,
File System Basics
and
Input/Output Basics
|
J (Packages)
and
J (I/O)
|
10/9 |
Programming Patterns:
Delimiting Strings
,
Dynamic Formatting
and
Pluralization
|
B 22-24 |
10/11 |
Examination 2
|
|
Part II: Intermediate Object-Oriented Programming
|
10/13 |
Specialization/Generalization (Derived Classes and Inheritance)
|
J (Subclasses)
|
Extra Help |
Experimenting with Specialization
|
|
10/16-10/23 |
Polymorphism through Inheritance
|
J (Polymorphism)
|
Extra Help |
Experimenting with Polymorphism through Inheritance
|
|
10/25 |
Interfaces
and
Polymorphism through Interfaces
|
J (Interfaces)
|
Extra Help |
Experimenting with Interfaces
and
Experimenting with Polymorphism through Interfaces
|
|
10/27 |
Abstract Classes
|
J (Abstract)
|
Extra Help |
Experimenting with Abstract Classes
|
|
10/30 |
Designing with Abstract Classes and Interfaces
|
|
11/1 |
Stack Traces
and
Developing Exception Classes
|
|
Part III: Recursion
|
11/3 |
Recursive Algorithms/Thinking Recursively
|
D&M 8 |
Extra Help |
Experimenting with Recursion
|
|
11/6 |
Programming with Recursion
|
|
11/8 |
Examination 3
|
|
11/10 |
Lab:
(5)
Tracing Recursive Methods
|
|
Part IV: Introduction to Collections
|
11/13 |
Parameterized Classes/Interfaces
|
Generics
|
11/15 |
Collections
|
J (Collections)
|
Extra Help |
Experimenting with Collections
|
|
11/17 |
The Iterator Pattern
and
The Composite Pattern
|
|
11/27 |
Arrays of Arrays (a.k.a. Multi-Dimensional Arrays)
|
D&M 15 |
Extra Help |
Experimenting with Arrays of Arrays
|
|
11/29 |
Subarrays Pattern
and
Neighborhoods Pattern
|
B 19, 20 |
Part V: Preparing to Move Ahead
|
12/1 |
Designing with Constructors and Factories
and
Course Evaluations
|
|
12/4 |
(Lecture Cancelled; Extra Office Hours)
,
Outbound Parameters
and
Mutability and Immutability Revisited
|
B26 |
12/6-12/8 |
(Lectures Cancelled; Extra Office Hours)
,
Static Nested Classes and Inner Classes
,
Local Classes
,
Anonymous Classes
and
Lambda Expressions
|
Nested
|
Part VI: Final Examination
|
12/11 |
Final Examination (1:00-3: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.
Attendance is mandatory on lab days.
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 (15% total)
,
several quizzes (10% total)
and
labs (5% total).
Homework Assignments: 5 homework assignments
will be
assigned during the semester. Note that their due dates are subject
to change.
HW1
; Due: 9/10 11:00PM
(Getting Started)
HW2
; Due: 9/17 11:00PM
(Unit Testing Fundamentals)
HW3
; Due: 9/24 11:00PM
(Classes and Enumerated Types)
HW4
; Due: 10/1 11:00PM
(JUnit)
HW5
; Due: 10/8 11:00PM
(Objects and References)
Make sure you read and understand all of the
policies
related to homework assignments.
homework assignments
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).
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.
Programming assignments may not be submitted after
the due date/time (in other words, you will
receive a grade of 0 on any programming
assignment that is not submitted on time).
Quizzes: 11 quizzes
will be
assigned during the semester. Note that their due dates are subject
to change.
Quiz 0; Due: 8/28 11:00PM
(Using Eclipse to Check Syntax and Style)
Quiz 1; Due: 9/1 11:00PM
(Operators)
Quiz 2; Due: 9/4 11:00PM
(Classes and Objects)
Quiz 3; Due: 9/6 11:00PM
(Developing Classes)
Quiz 4; Due: 9/11 11:00PM
(Loops)
Quiz 5; Due: 9/25 11:00PM
(Classes and Enums)
Quiz 6; Due: 10/2 11:00PM
(Exceptions)
Quiz 7; Due: 10/9 11:00P
(References)
Quiz 8; Due: 10/30 11:00PM
(Specialization and Inheritance)
Quiz 9; Due: 11/6 11:00PM
(Intermediate OOP Concepts)
Quiz 10; Due: 12/1 11:00PM
(Collections)
Make sure you read and understand all of the
policies
related to homework assignments.
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.