Hi There!

I'm Dan Schlegel, an Assistant Professor in the Computer Science Department at SUNY Oswego

CSC212 – Spring 2019

Principles of Programming


Prof. Daniel R. Schlegel, 395 Shineman Center, daniel.schlegel@oswego.edu
Office/Lab hours: T: 8-9am, W: 8-9am, Th: 12:15-1:15pm, F: 9-10am, and by appointment
Section 810: MWF 10:20-11:15am, Park 315

Teaching Assistants:

We will have four teaching assistants during the Spring 2019 instance of the course: Shakhar Dasgupta, Jim Spagnola, and Christopher Townsley

Office Hours:

8:00Dan's Office Hours
395 Shineman
Dan's Office Hours
395 Shineman
9:00Dan's Office Hours
395 Shineman
9:30J+S Office Hours
446 Shineman
Park 315
Park 315
Park 315
11:30J+C Office Hours
446 Shineman
12:00C+S Office Hours
446 Shineman
12:30Dan's Office Hours
395 Shineman
1:30J+S Office Hours
446 Shineman
4:00J+C Office Hours
446 Shineman
C+S Office Hours
446 Shineman

There is also tutoring available from the Office of Learning Services, including walk-in hours MWF from 2-4. There are likely more than this, contact them for details.

Course Description:

This course provides an introduction to programming and computation, including the concepts and usage of expressions, variables, control structures, functions, compound types, classes, objects, and I/O in a high-level programming language, along with their roles in implementing programs to solve common problems.

Course Objectives:

Upon completion of this course, students will demonstrate ability to:

  • Write, test, and explain the behavior of programs involving fundamental programming constructs, built-in data structures, standard libraries.
  • Construct, execute and debug programs using development tools; apply and implement structured problem solving; handle abnormal control flow; understand and rely on static type safety to reduce errors
  • Incorporate class design, encapsulation, and inheritance; incorporate data structures for problem solving; describe positive and negative ways in which software impacts society.


Required: Graci, C. and Schlegel, D.R. A First Course in Computer Programming: Laboratory Manual

Useful Resources:

Introduction to Computer Science Using Java
Introduction to Programming Using Java, 8th Edition
Think Java: How to Think like a Computer Scientist
Java Tutorials @ Oracle
Java 8 Standard Libraries @ Oracle
Java on Lynda.com

Important Links:

CS1 Web Site Resources
Student Web Pages

Attendance and Participation:

As per college policy, attendance in all sessions is obligatory. If you cannot attend a class meeting due to religious, athletic, health related circumstance, or circumstance of particular hardship, please notify me in advance via email. Please be ready to present proof, if necessary. It is expected that each person actively engage in each class session.

Classroom Etiquette:

A positive learning environment relies upon creating an atmosphere where all students feel welcome. Classroom discussion is meant to allow us to hear a variety of viewpoints. This can only happen if we respect each other and our differences. Hostility and disrespectful behavior is not acceptable.

Electronic devices may not be used during class by students in this course, including cell phones, laptops, headphones, etc.


If you construct knowledge you make it your own, and in doing so you get better at using it.  For this reason, slides from the course will, in general, not be posted online. Some selected materials, such as handouts, will be posted either on this page or on Blackboard.

“The art of being wise is the art of knowing what to overlook”
    — William James

Grading Summary:

Exam 120%
Exam 220%
Final Exam30%

The default grading for the course will be along the university’s standard grading curve:

A: 93-100C+: 77-79
A-: 90-92C: 73-76
B+: 87-89C-: 70-72
B: 83-86D+: 67-69
B-: 80-82D: 60-66
 E: 0-59

Grades may be adjusted downward as a result of poor attendance or poor engagement in programming assignments. If your participation in these is satisfactory your grade will simply be that as calculated above.


All assignments will be completed alone, but working together without writing or sharing code to come up with general solutions is encouraged. You are expected to post all of your programming assignments to your Web site.

Assignments will be demoed in-person to one of the TAs during their office hours. You will only have one chance to demo each assignment to the TA. They may ask you to modify your program in certain ways, or use specific input during the demo.

Assignments are considered on-time if they are demoed between 1 week before and 1 week after the due date. Assignments may still be demoed between week 1 and 2 after the due date, but only for half of the otherwise earned credit.

Note that no credit will be given for assignments which do not work, and partial credit will be given if only parts of the assignment are shown to work during the demo.

Your programming assignment grade does not figure directly into your course grade, unless your work is unsatisfactory, in which case your course grade (exam/lab grade) will be lowered by 1 letter grade. (Of course, it figures indirectly into your grade, since the learning that accrues as a result of completing the assignments will help you to prepare for the exams.)


You are required to attend the lab in which you are enrolled, and no other. For each lab, you will get a grade based partly on engagement in the lab during your regularly scheduled lab period, and partly on completion of the lab, on your own time, if need be. These grades will be assigned by your lab instructor. TAs cannot grade labs. Completion will be assessed by examining your web site.

The recommended approach for engaging in the laboratory component of the course is to do the following sequence of tasks for each lab:

  1. Prepare for the lab ahead of time by (a) attending class, and (b) reading through the lab in the Lab Manual.
  2. Refrain from beginning the lab ahead of time. The idea is for you to actually commence work on the lab when your lab period actually begins.
  3. Engage in doing the lab during your lab period. If you finish early, you should study your notes or one of the online textbooks listed in the Useful Resources section of this page. You will earn up to 70 points of the lab’s 100 points for appropriate participation in the lab during your laboratory period.
  4. Complete the lab on your own time, and indicate that you have done so by placing the relevant artifacts on your course web site. You will earn up to 30 points of the lab’s 100 points for doing so.

It is important to note that appropriate participation requires that you work from a hard copy of the lab. Should you fail to bring your Lab Manual or a hard copy of the lab to class, and determine to somehow proceed to work from an on-line copy of the lab, you will only be awarded 30 of the 70 points, at most, for being there and working on the lab.

Working on previous labs during your lab period is prohibited. If you need help in completing a lab that you did not finish during the lab period, you should seek help from a TA during one of their office hours.

Starting with week 3 of the course, it is required that you post artifacts from the labs on your web work site within two weeks of the lab period in which the lab was introduced.

If you miss no more than one lab period this semester, your point total will not be adversely affected. Your lab grade will be calculated as follows:

grade = minimum(100,score), where:
• score = ( ( ( pt + 70 ) / ( n * 100 ) ) * 100 )
• n = the number of labs
• pt = your point total based on the n labs


You may bring your three-ring lab binder to the exams, including any additional documents or notes you decide to augment it with. You may not bring any loose documents – they must be hole punched and organized in your binder. I recommend building this binder up incrementally as the course progresses.

Exams will be given during weeks 6 and 12 of the semester, as well as during finals week.

Each exam question will be assigned a point value (generally some multiple of 3 depending on difficulty), where the following scheme will be used in grading it:

0 – Did not attempt / No serious attempt / Completely incorrect
1 – Mostly incorrect solution
2 – Somewhat incorrect solution
3 – Perfect solution

If the problem is a multiple of 3, then intermediate scores will be given as appropriate. The total points received on all questions will then be summed and divided by the points possible and scaled as appropriate according to the percentages given below.


During the semester we will cover a great many topics, including:

Problem-solving strategies in programming
Good programming technique
Java syntax
Control flow of programs
Modeling classes in terms of state and behavior
String processing
Making use of external libraries
Array processing
Basic data structures such as ArrayList
File I/O

This syllabus and the course schedule are subject to change by the instructor. All changes and related justifications will be announced in class, and updates will be reflected in this web version.

1Monday1/28First day of class
Syllabus, Introductory exercise
Be sure to answer office hours survey!
Wednesday1/30Algorithms and Algorithmic Thinking
Examine Lab 1
Reading: Read Chapter 1: Entrance in the lab manual
Friday2/1Introduction to Microworlds
The Nonrepresentational Painting World
2Monday2/4NPW, continued
Modular Melodic World
Selected Sounds
Wednesday2/6Add deadline
MMW Continued
MMW Example 2
Friday2/8Composers, concluded
Some more advanced NPW programs
3Monday2/11Problem decomposition, stepwise refinement
Big ideas: how to read/write programs
Assignment 1, due (demoed) 2/20
Wednesday2/13Quick discussion about Lab 3
Variables and Types
Friday2/15Drop deadline
4Monday2/18Problem Decomposition
Imaginative Construction
Assignment 2 due (demoed) 2/27
Wednesday2/20I/O, Type conversion
Friday2/22Control flow, Selection
Assignment 3 due (demoed) 3/1
5Monday2/25Snow Day!
Wednesday2/27Interation, headers and trailers
Friday3/1Iteration, concluded
Superficial Signatures
Practice Exam 1 Posted on Blackboard
6Monday3/4Methods, Functions, and Commands
Wednesday3/6Methods, Functions, and Commands, concluded
CSA Review Session - Thursday 5-6pm
Friday3/8Exam 1
7Monday3/11Go over exam 1
Wednesday3/13Finish going over exam 1
Friday3/15Introduction to Arrays
Assignment 4 due (demoed) 4/12. Demo by 4/18 for full credit, 4/26 for half credit
8Monday3/18Spring Break - No Class
Wednesday3/20Spring Break - No Class
Friday3/22Spring Break - No Class
9Monday3/25Arrays, continued
Wednesday3/27For loops
Friday3/29Arrays, concluded
ArrayLists introduction
10Monday4/1ArrayLists, continued
Wednesday4/3Quest - No Class
No Labs This Week!
Friday4/5ArrayLists, concluded
Assignment 5 due (demoed) 4/22. Demo by 4/29 for full credit, 5/6 for half credit
Practice Exam 2 Posted on Blackboard
Withdraw Deadline
11Monday4/8One final ArrayList example
Introduction to Modeling using Object Orientation
Wednesday4/10Object Orientation, continued
Friday4/12Object Orientation, continued
12Monday4/15Object Orientation, continued
Wednesday4/17Interfaces and their Implementation
Thursday4/18CSA Review Session - 5-6pm in 425 Shineman
Bring a completed practice exam as your ticket to enter!
Friday4/19Easter Weekend - No Class
13Monday4/22Exam 2
Wednesday4/24What does it mean to learn something new?
Test Corrections due 4/29 at the beginning of class
Friday4/26Developing some algorithms...
TA office hours will be held in 425 today
Assignment 6 accepted for full credit until 5/10. Last day to demo anything will be 5/10
14Monday4/29Algorithms, continued
If you've demoed an assignment and it isn't on your website, add it before Wednesday!
Wednesday5/1Exam 2 Discussion
Friday5/3Sorting algorithms, continued
15Monday5/6Search Algorithms
Final Exam Structure on Blackboard
Discussion of Lab 13
Binary Search
Bring headphones to lab this week!
All labs must be posted on your website by midnight 5/17
Friday5/10Heuristics in Programming
Last day of class
Lab 14 is a nice one to do to keep you fresh over summer!
Finals WeekMonday5/13Final Exam 10:30am - 12:30pm

Academic Integrity:

While it is acceptable to discuss general approaches with your fellow students, the work you turn in must be your own. You may not turn in code found on the internet. If you have any problems doing the assignments, consult the instructor. Please be sure to read the webpage, “Academic Integrity“, which spells out all the details of this, and related policies. See my page on plagiarism for an explanation of what I consider cheating.


If you have a disabling condition which may interfere with your ability to successfully complete this course, please contact Accessibility Resources located at 155 Marano Campus Center, phone 315.312.3358, access@oswego.edu