Table of Contents

Syllabus for cs12jf17


This syllabus is available online at

Basic Info

Instructor Jeffrey Bergamini
Email (please prefix the subject with [cs12j])
Office/STEM Hours Monday/Wednesday 0800–1100, Tuesday/Thursday 1145–1445 in 827 or STEM Center, and simultaneously online (wait at least 5 minutes for a response).
Schedule: 98256 Meetings: M 1110–1315, W 1110–1300; Room 829
Schedule: 98257 Meetings: R 1800–1950; Room 829

Catalog Description

CS 12J: Introduction to Programming Concepts and Methodology, Java

Presents an introduction to computer programming using the Java programming language beginning with basic principles and progressing to object-oriented programs and visual programming. Includes: algorithms, data types, declarations, expressions, selection, repetition, methods, recursion, libraries, arrays, classes, objects, components, events, files and streams.

Learner Outcomes

  • Design elementary computer algorithms.
  • Develop small Java programs that implement basic algorithmic designs.
  • Organize and document program code following the principles of software engineering.

Textbooks and Materials

There is no textbook required for this course. Suggested reading will be posted in the lecture materials. Here are some recommended free online textbooks for supplementary reading:

Other materials will be on the course website or handed out in person.

Keep in mind that a lot of this information is available online as well. This class is a good opportunity to learn how to use search engines effectively, if you haven't already. Check out Google's advanced search options and DuckDuckGo's syntax rules for some very useful pointers.


This schedule is subject to change.

Week Dates Topics Assignments and Due Dates
01 08/28 - 09/01 Intro; Java basics 09/01 : Assignment 00 (cs12jf17as00)
02 09/04 - 09/08 (Holiday: 09/04) — Primitive types; Standard I/O 09/08 : Assignment 01 (cs12jf17as01)
03 09/11 - 09/15 Selection; Decomposition 09/18 : Assignment 02 (cs12jf17as02)
04 09/18 - 09/22 Repetition; Debugger; Numeric limitations 09/25 : Assignment 03 (cs12jf17as03)
05 09/25 - 09/29 Repetition; Arrays 10/02 : Assignment 04 (cs12jf17as04)
06 10/02 - 10/06 Command-line arguments; Decomposition; Scope; OOP 10/09 : Assignment 05 (cs12jf17as05)
07 10/09 - 10/13 Recursion; OOP 10/16 : Assignment 06 (cs12jf17as06)
08 10/16 - 10/20 OOP 10/23 : Assignment 07 (cs12jf17as07)
09 10/23 - 10/27 Encapsulation; exceptions; Javadoc 10/30 : Assignment 08 (cs12jf17as08)
10 10/30 - 11/03 Lists 11/06 : Assignment 09 (cs12jf17as09)
11 11/06 - 11/10 (Holiday: 11/10) — Binary I/O; exceptions 11/13 : Assignment 10 (cs12jf17as10)
12 11/13 - 11/17 Static vs non-static; Sets and Maps 11/22 : Assignment 11 (cs12jf17as11)
13 11/20 - 11/24 (Holiday: 11/23, 11/24) — Interfaces and Polymorphism 11/29 : Assignment 12 (cs12jf17as12)
14 11/27 - 12/01 Inheritance and Polymorphism; GUI 12/04 : Assignment 13 (cs12jf17as13)
15 12/04 - 12/08 GUI; functional programming 12/15 : Assignment 14 (cs12jf17as14)
16 12/11 - 12/15 Finals Week
98256: Monday 12/11, 1000–1250
98257: Thursday 12/14, 1900–2150


Grades will be recorded on a point basis, and your final letter grade will be determined by the percentage of points earned. Real-time grade information is available on our course website.

Category Percentage Points Possible
Assignments 75% 750
Labs/Participation 25% 250
Total 100% 1000

In the event that average scores are unexpectedly low, class-wide scores may be shifted upward at the instructor's discretion.

Assignments, Lab Work, and Participation

Assignments are your chance to work on your own, experiment with the material we cover in class, and demonstrate that you understand it.

All programming assignments must at least compile and/or not result in interpreter syntax errors in order to receive a nonzero grade.

Lab work (when applicable) is done in class or other scheduled lab times, and often performed in groups.

Other participation points may be earned by answering questions in class, participating in polls, quizzes, etc.



Your presence and participation are expected at all in-person class meetings. While attendance is not usually taken, remember that your grade may depend on it in other ways, including periodic, unannounced, in-class lab work, Q&A, polls, etc.

Late Work

Each assignment specifies a due date. Late work may be docked up to 10% for the first day, and 20% for each subsequent day. I realize that emergencies, medical or otherwise, may affect your ability to turn in work. It is your responsibility to make me aware of any problems, so please contact me and make arrangements before the work is due, if at all possible.


All work submitted is to be your own, unless explicitly stated in the instructions. Claiming another's work as your own, copying material from another student, or acquiring prior knowledge of in-class assignments will result in grade of zero and possible dismissal. Also, please keep in mind that I will perform similarity tests on programming assignment submissions, and plagiarized code is usually very easy to detect.


Working together is an important aspect of learning, and a good thing in general. You are encouraged to study with your fellow students and discuss general topics, concepts, strategies, etc. This does not mean you can copy from them! Be sure to follow the plagiarism guidelines.


Please contact the instructor as soon as possible if you need accommodations. As required by the Americans with Disabilities Act (ADA), accommodations are provided to ensure equal opportunity for students with verified disabilities. If you need assistance with an accommodation, please contact Accessibility Support Center, room 1073, 479-6379, or Learning Skills Program, room 1073, 479-6220

Withdrawal by Instructor

It is the student's responsibility to officially withdraw from classes. However, students missing more than two assignments may be dropped from the course at the instructor's discretion, unless prior arrangements have been made and agreed to.