Fall 2023 (Section 5, 85661) - 3 credit hours
JMU CS159 - Advanced Programming
Help Policies Solutions Study-Aids Tools
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.
Programming Assignment 1 ; Due: 10/22 11:00PM(Extended to 10/25 11:00PM) (I/O and Specialization)
Programming Assignment 2 ; Due: 11/5 11:00PM (Interfaces, Abstract Classes, and Polymorphism)
Programming Assignment 3 ; Due: 11/19 11:00PM(Extended to 11/26 11:00PM) (Recursion)
Programming Assignment 4 ; Due: 12/10 11:00PM (Collections)

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.

Copyright 2023