Hi There!

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

CSC212 – Spring 2020

Principles of Programming

Updates as of 3/14/20 HERE and also (in less deail) in RED below.


Prof. Daniel R. Schlegel, PhD – 464 Shineman Center, daniel.schlegel@oswego.edu
Office/Lab hours: M 3:00-4:00pm; T: 3:00-4:00pm; Th: 2:30-3:30pm; and by appointment on Blackboard Collaborate. Feel free to email any time to schedule a meeting!
Section 800: MWF 9:10-10:05am, Park 315 on Blackboard Collaborate

Teaching Assistants:

Andrew Boyce, Kate Gordon, Rinaldo Iorizzo, Adrian Naaktgeboren, and Thomas Hanley

Office Hours / Course Schedule:

8:00Prof. Graci's Lab (L53)
Shineman 446

Park 315
Blackboard Collaborate
Park 315
Blackboard Collaborate
Park 315
Blackboard Collaborate
9:30Prof. Tenbergen's Lab (L52)
Shineman 446
Blackboard Collaborate
10:30R Office Hours
Shineman 446
Blackboard Collaborate
R Office Hours
Shineman 446
Blackboard Collaborate
11:00Prof. Pantaleev's Lab (L55)
Shineman 446
Blackboard Collaborate
12:30K+AN Office Hours
Shineman 446
Blackboard Collaborate
Prof. Lee's Lab (L54)
Shineman 446
Blackboard Collaborate
1:30AB Office Hours
Shineman 446
Blackboard Collaborate
K+R Office Hours
Shineman 446
Blackboard Collaborate
K+R+AB Office Hours
Shineman 446
Blackboard Collaborate
2:00Prof. Lea's Lab (L50)
Shineman 446
Blackboard Collaborate
3:00Prof. Schlegel's Lab (L51)
Shineman 446
Blackboard Collaborate
5:30T+AN Office Hours
Shineman 446
Blackboard Collaborate
T+AN Office Hours
Shineman 446
Blackboard Collaborate
6:00AB+T Office Hours
Shineman 446
Blackboard Collaborate

There is also tutoring available from the Office of Learning Services. 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 documentation, if necessary. It is expected that each person actively engage in each class session. Should you miss a session, some notes and sample programs will be uploaded to Blackboard. Please try to attend office hours or use the Course Room to discuss with other students to obtain more complete notes.

When attendance is taken, it will be done at the beginning of class. If you are not present at the beginning of class, you will not be able to sign the attendance sheet. Attendance will be taken  using Blackboard Colaborate.

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:

Check-In Quiz20
Exam 1180
Exam 2200
Final Exam300

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

Letter: PointsLetter: Points
A: 930-1000C+: 770-790
A-: 900-920C: 730-760
B+: 870-890C-: 700-720
B: 830-860D+: 670-690
B-: 800-820D: 600-660
 E: 0-590

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 on Blackboard Collaborate 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 on or before the due date. Assignments may still be demoed up to two weeks after the due date, but, beginning with assignment 4, with a 5% 1% penalty per weekday past the deadline.

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. From Assignment 2 onward, only assignments posted on your work site will be graded.

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. Being late to lab or leaving early will adversely affect your grade.

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 two lab periods 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 + 140 ) / ( n * 100 ) ) * 100 )
• n = the number of labs
• pt = your point total based on the n labs


You may bring up to five pages of notes to each quiz/exam. These may be hand-written or typed, and might include important notes, code snippets, class examples, etc. Not permitted are questions/answers from exams held during earlier instances of the course. You will submit your notes with your exam and get them back when the exam is returned. 

Exams will be given during weeks 6 and 12 of the semester (see the below schedule for exact dates), as well as during finals week. Should these last two exams need to be given in a socially distanced way, the rules and format will remain but mechanics may differ.

Each exam question will be assigned a point value, questionPoints, where the following general scheme will be used in grading it:

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

Intermediate scores will be given as appropriate. The total points received on all questions will then be summed to determine your score. 


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/27First Day of Class
Syllabus, Overview
Opening Day Activity
Remember to answer the office hours survey!
Wednesday1/29Labs start this week!
Discussion of Lab 1
Algorithms and Algorithmic Thinking
Read Chapter 1: Entrance in the lab manual
Friday1/31TA office hours start next week!
Some comments on note taking
Introduction to Computational Microworlds
2Monday2/3Nonrepresentational Painting World (NPW)
Modular Melodic World (MMW)
Wednesday2/5Bring headphones to lab this week to hear the MMW sounds!
Modular Melodic World (MMW)
MMW Example 1
Friday2/7Snow Day!Assignment 1: Microworld Problem Solving due (demoed to a TA) 2/21
3Monday2/10MMW Composers
MMW Example 2
Check-In Quiz
Wednesday2/12Big Idea: Program like a tailor
Friday2/14Big Idea: Stepwise Refinement
Drop Deadline
4Monday2/17How to Read a Program
Data Types
Wednesday2/19Variables & Expressions
Friday2/21Shapes World Problem Solving
Big Idea: Problem Decomposition
Assignment 1 Due!
Assignment 2: Enabling Your Web Work Site due (demoed to a TA 2/28 3/4
Assignment 3: Shapes World Problem Solving due (demoed to a TA 3/4
5Monday2/24Big Idea: Imaginative Construction
Data Types: Revisited
Wednesday2/26Control Flow: Selection
Friday2/28Snow Day
6Monday3/2Control Flow: Iteration
Superficial Signatures
Exam Ground Rules and Preparation Tips
Wednesday3/4Anatomy of Methods
CSA Review Session Thursday 3/5 3PM in Shineman 425
Assignment 2 Due!
Assignment 3 Due!
Friday3/6Exam 1
7Monday3/9Go Over Exam 1
TA office hours today will be held in 425 Shineman, since CSC241 has exams in 446
Wednesday3/11Finish going over exam 1Assignment 4: Nonrepresentational Artistic Expressions due (demoed to a TA) 4/3 4/6
Friday3/13Announcements re: transition to distance learning
Headers + Trailers
8Monday3/16Spring Recess - No Class
Wednesday3/18Spring Recess - No Class
Friday3/20Spring Recess - No Class
9Monday3/23Class held on Blackboard Collaborate
Introduction to Arrays
Wednesday3/25Class held on Blackboard Collaborate
Arrays, continued.
Friday3/27Class held on Blackboard Collaborate
Arrays + For Loops
10Monday3/30Class held on Blackboard Collaborate
For loops
Some additional notes on arrays
ArrayList Intro
Wednesday4/1Quest - No Class
Labs are still being held - this week they are for catching up! No new lab to do.
No 10:45-11:45 TA hours today
Friday4/3Class held on Blackboard Collaborate
11Monday4/6Class held on Blackboard Collaborate
Practice Exam 2 Posted on Blackboard!
ArrayLists, continued
Assignment 4 Due!
Assignment 5: Three List Interpreters due (demoed to a TA) 4/16
Wednesday4/8Class held on Blackboard Collaborate
Do Lab 9a this week!
ArrayList, concluded
Friday4/10Easter Weekend - No Class
12Monday4/13Class held on Blackboard Collaborate
Introduction to object modeling with classes
Wednesday4/15Class held on Blackboard Collaborate
Do Lab 10 This Week!
CSA Review Sessions: 4/15 3pm; 4/16 2:30-3:30pm at Collaborate link sent by email!
Object Orientation, continued
Friday4/17Exam 2
13Monday4/20Class held on Blackboard Collaborate
Start going over Exam 2
Wednesday4/22Class held on Blackboard Collaborate
Do Lab 11 This Week!
Finish going over Exam 2
Resume discussion of Object Orientation
Friday4/24Class held on Blackboard Collaborate
Final Exam Structure on Blackboard
Object Orientation, continued
Assignment 6: The Inflatable Household due (demoed to a TA 5/8
14Monday4/27Asynchronous activity posted to Blackboard
Wednesday4/29Class held on Blackboard Collaborate
AB+T TA hours moved to 4:30-6:30pm
Do Lab 12 This Week!
Object orientation, concluded
Friday5/1Class held on Blackboard Collaborate
"Test" posted on Blackboard for you to make sure you can answer file response questions OK. Please complete by Monday night!
What does it mean to learn something new?
15Monday5/4Class held on Blackboard Collaborate
Make sure all labs are on your website by the end of the day on Thursday 5/14
Developing some Algorithms
Wednesday5/6AB+T TA hours moved to 4:30-6:30pm
No Class
Friday5/8Class held on Blackboard Collaborate
Last Day of Class
Last Day to Demo Assignments!
Last Day of TA Hours
Please complete the Course Evaluation Survey
Have all labs on your website by the end of the day on 5/14!
Withdraw Deadline
Selection Sort
Assignment 6 Due!
Finals WeekWednesday5/138:00-10:00am
Exam will be available to begin from 8 to 8:30 am. You will have 2 hours 10 minutes. The final 10 minutes is for you to ensure you've uploaded all of your files as all of the questions will be of the "File Response" variety! Email with any problems!
Final Exam - To be taken on Blackboard

Academic Integrity:

SUNY Oswego is committed to Intellectual Integrity. Any form of intellectual dishonesty is a serious concern and therefore prohibited. You can find the full policy online. 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. 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

Clery Act/Title IX Reporting:

SUNY Oswego is committed to enhancing the safety and security of the campus for all its members. In support of this, faculty may be required to report their knowledge of certain crimes or harassment. Reportable incidents include harassment on the basis of sex or gender prohibited by Title IX and crimes covered by the Clery Act. For more information about Title IX protections, go to https://www.oswego.edu/title-ix/ or contact the Title IX Coordinator, 405 Culkin Hall, 315-312-5604, titleix@oswego.edu. For more information about the Clery Act and campus reporting, go to the University Police annual report: https://www.oswego.edu/police/annual-report.