Hi There!

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

CSC212 – Fall 2023

Principles of Programming

Quick links: Grading Summary | Day-By-Day Schedule | Class Documents (Google Drive)

Instructors:

Prof. Daniel R. Schlegel, PhD – 464 Shineman Center, daniel.schlegel@oswego.edu
Prof. Elizabeth Wilcox, PhD – 174D Marano Campus Center, elizabeth.wilcox@oswego.edu

Course Assistants:

Teaching Assistants (TAs): Keith Allen, Saurav Lamichhane, Cris Uceta, Scarlett Weeks

Office Hours / Course Schedule:

Finals Week Office Hours:
Dan – Monday 9:30-11, Tuesday 9:30-11:30 in 464 Shineman
Elizabeth – Monday 9:30-11 in 174D MCC, Tuesday 11-12:30 in 450 Shineman

MondayTuesdayWednesdayThursdayFriday
8:00Prof. Tenbergen’s Lab (L52)
Shineman 446
8:00-8:55
8:30
9:00Class
Park 315
9:10-10:05
Class
Park 315
9:10-10:05
Class
Park 315
9:10-10:05
9:30Prof. Lee’s Lab (L57)
Shineman 446
9:35-10:30
10:00TA Office Hours (SW)
Shineman 446
10:30-12:40
10:30Prof. Lea’s Lab (L53)
Shineman 446
10:20-11:15
11:00Prof. Schlegel’s Office Hours
464 Shineman
11:00-12:00
11:30Prof. Wilcox’s Office Hours
174D MCC
11:30-12:25
Prof. Early’s Lab (L51)
Shineman 446
11:30-12:25
12:00Prof. Wilcox’s Office Hours
Shineman 450
11:30-1:35
12:30Prof. Liu’s Lab (L54)
Shineman 446
12:40-1:35
Prof. Wilcox’s Office Hours
12:40-1:35
1:00Prof. Schlegel’s Office Hours
Shineman 464
1:00-2:00
Prof. Wilcox’s Office Hours
174D MCC
1:00-2:00
1:30TA Office Hours (KA/CU/SW)
446 Shineman
1:00-4:00
2:00Prof. Schlegel’s Lab (L50)
Shineman 446
1:50-2:45
2:30
3:00Prof. Wilcox’s Lab (L55)
Shineman 446
3:00-3:55
TA Office Hours (CU/KA)
Shineman 446
3:00-5:00
TA Office Hours (SL/SW)
Shineman 446
3:00-5:00
3:30Prof. Schlegel’s Office Hours
Shineman 464
3:00-4:00
4:00TA Office Hours (CU/KA/SL)
Shineman 446
4:00-6:00
TA Office Hours (SL)
Shineman 446
4:00-6:00
4:30
5:00
5:30
6:00
6:30
7:00
7:30

Please come to one of us or a TA if you need help! The computer science association, and in general students who hang out in 425 Shineman, is also a great resource. There is also tutoring available from the Office of Learning Services. Contact them for details! 

How to Interact with the Course:

This page contains the course syllabus, including the procedures we will follow throughout the semester. It also includes a schedule of when TA office hours are occurring, when the exams are, and a record of what we did in class each day. Your assignments will be posted here, along with due dates. So, you should bookmark this page

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.

Textbooks:

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 11 Documentation @ Oracle
Java on LinkedIn Learning

Important Links:

CS1 Web Site Resources

Attendance and Participation:

As per college policy, attendance in all sessions is obligatory. Attendance will be taken. Students who miss 2 class days (with unexcused absences) in the first week of the semester or who miss more than 6 class days (with unexcused absences) over the semester will be dropped from the class. Students who are dropped after the deadline for dropping courses will earn an E in the class.

If you are not present at the beginning of class, you will not be marked as present. If you cannot attend a class meeting due to religious, athletic, health related circumstance, or circumstance of particular hardship, please notify us in advance via email. Please be ready to present documentation, if necessary. It is expected that each person actively engage in each class session.

One component of attendance and participation will be the completion of small weekly handouts graded only for completion and effort. These will be distributed during class on Fridays and collected the following Monday. You can receive partial credit for late submissions on the Wednesday, but there is no other partial credit.

Modality:

We meet in person three times a week. There will be no recording, and we won’t work through the content with you in a one-on-one fashion during office hours or an appointment – basically, if you miss class then you missed out on what you signed up for when registering for the class and you will have to work through the content independently. Of course, we will answer questions about the content, if you have any, and there are exceptions for excused absences due to illness etc.

“Go Remote” due to COVID-19: If we are forced to “go remote” for a prolonged period during the semester then we’ll hold class over Zoom and make a Zoom link available on course webpage, as well as email it with the weekly content. This is definitely a sub-par, miserable excuse for a class meeting. We’ll do this only if circumstances force us.

“Go Remote” Days Due to Weather: In short, we value our snow days and will do what is reasonable to make sure that no commuter is in danger, while also maintaining academic integrity. In long, the concept of a “Go Remote” day due to weather is crap. We deserve our snow days. Yes, snow days are a serious inconvenience and create a content crunch, especially if classes are cancelled indiscriminately. But, snow days are also a weather-gifted day of respite and nearly everyone appreciates an occasional day of rest. We may choose to skip certain topics during the semester so that we can afford to cancel class on a “Go Remote” day. If it turns out that many classes are cancelled due to weather, then we will have to assign independent reading / activities to cover some of the content.

Classroom Etiquette:

A positive learning environment relies upon creating an atmosphere where all students feel welcome. 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.

The current university policy will decide the class policy on masks and social distancing. Regardless of class policy, you can do more! If you wish to wear a mask, please do so! If you are sick with a potentially communicable disease, you should wear a mask and seriously consider staying home to prevent the spread of disease. 

Philosophy:

If you construct knowledge you make it your own, and in doing so you get better at using it.  For this reason, notes and 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 the Google Drive linked at the top of the page.

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

Programming is a skill, like learning an instrument. A good programmer can look at at a problem, work out a solution, and express that solution in code – just as a musician might imagine a piece of music to represent a feeling, and express it on their instrument of choice. This is quite different from a course where you might be able to study by memorizing facts. Instead, we will push you to practice throughout the semester, building your skills as a programmer by understanding the concepts and applying them. 

Grading Summary:

AssessmentPoints
Participation / Attendance100
Programming Challenges200
Labs200
Exam 1150
Exam 2150
Final Exam200
Total1000

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

Programming Challenges:

All programming challenges will be completed alone, but working together without writing or sharing code to come up with general solutions is encouraged. That is: share ideas, not solutions. You are expected to post all of your programming assignments to your Web site. Occasionally a programming  challenge may also include a non-programming component where you solve a problem or create some sort of artifact exhibiting what you’ve learned.

Programming challenges 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. At the end of the semester we will review the notes made by TAs and assign a final grade. The TA will provide you comments on your assignments along with a preliminary score, but our final grade is based on a combination of correctness, completion, and whether an honest attempt was made.

Programming challenges 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 with a 5% 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. Once your website has been established, only assignments posted there will be graded.

Labs:

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.

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. Having the lab open on a cell phone is not a suitable substitute for a lab manual. Being late to lab or leaving early will adversely affect your grade.

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.

Working on previous labs during your lab period is prohibited until you have completed the current week’s lab. If you need help in completing a lab that you did not finish during the lab period, you should seek help from a TA or GA 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

Exams:

Exams are open notes – you should plan to have your notes from class handy, as well as your lab notebook (it makes the most sense if you combine these in some way which is logical to you!). Not permitted are electronic aides and questions/answers from exams held during earlier instances of the course. 

Exams will be given during weeks 7 and 13 of the semester (see the below schedule for exact dates), as well as during finals week. Exams will be given during class time and at the designated time during finals week.

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. 

Schedule/Outline:

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
Recursion
Array processing
Basic data structures such as ArrayList
File I/O

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

WeekDayDate
1Monday8/28First day of class
Syllabus Overview
Introductory Activity
Wednesday8/30Algorithms and Algorithmic Thinking
Reading: Entrance chapter in the lab manual
Friday9/1Computational Microworlds
NPW Introduced
2Monday9/4Labor Day – No Class
Wednesday9/6MPW & MMW
Example 1 Sounds
Friday9/8MMW, contd.
Example 2
Programming Challenge 1 – Microworld Warmup due (demoed to a TA) 9/19
3Monday9/11Big Idea: Program Like a Tailor
Big Idea: Stepwise Refinement
NPW Problem Solving
Wednesday9/13Writing Abstractions – Traffic Light Program
Friday9/15How to Read a Program
Types and Variables
4Monday9/18Types and Variables, continued
Wednesday9/20Expressions
Programming Challenge 2 – Microworld Problem Solving due (demoed to a TA) 10/3
Friday9/22The DataPlay Program
Shapes World Problem Solving
5Monday9/25Shapes World Problem Solving
Wednesday9/27Control Structures
Friday9/29More Control Structures
CS1 Exam Ground Rules and Study Tips
6Monday10/2Headers and Trailers
Wednesday10/4Superficial Signatures
Methods, Functions, and Commands
Programming Challenge 3 – Shapes World Problem Solving due (demoed to a TA) 10/17
CSA Exam 1 Review Sessions:
1) Content Review – 10/5 7PM in 446 Shineman
2) Practice Exam Review – 10/10 7PM in 444 Shineman
Friday10/6Methods, Functions, Commands
7Monday10/9How To Study Guide
Final Thoughts on Methods
Array Intro
Wednesday10/11Exam 1
Friday10/13Fall Break – No Class
8Monday10/16Going over Exam 1
Wednesday10/18Finish going over Exam 1
Arrays, continued
Programming Challenge 4 – Nonrepresentational Artistic Expressions due (demoed to a TA) October 31
Friday10/20For Loops
9Monday10/23Arrays
Wednesday10/25Arrays, contd
Friday10/27Arrays, contd
10Monday10/30ArrayLists
Wednesday11/1ArrayLists, contd
Programming Challenge 5 – Three List Statistics Interpreters due (demoed to a TA) 11/14
Friday11/3Fun with ArrayLists!
11Monday11/6Modeling Objects with Classes
Practice Exam 2 posted in course documents!
Wednesday11/8Modeling Objects with Classes, continued!
Programming Challenge 6 due 12/5!
Friday11/10
12Monday11/13
Wednesday11/15
Friday11/17Exam 2
13Monday11/20Thanksgiving Recess – No Class
Wednesday11/22Thanksgiving Recess – No Class
Friday11/24Thanksgiving Recess – No Class
14Monday11/27Going over Exam 2
Wednesday11/29
Friday12/1Algorithms, revisited
15Monday12/4MaxValue, concluded
Wednesday12/6Selection Sort
Friday12/8Last day of class
Visualized Sorting Algorithms
Finals WeekWednesday12/13Final Exam 8:00-10:00am

Mental Health:

Stress is a normal and important part of our human experience. However, there are times when your stress will exceed your coping skills and resources. The changes that we have experienced due to the COVID-19 pandemic have impacted us all in various ways and are expected to continue to do so for the foreseeable future. Your health and well-being are critical components in your ability to learn. If you find that you are struggling to engage and function, please reach out. Resources are available, including Counseling Services, oswego.edu/csc, which provides brief and confidential counseling support to enrolled students (covered by your student health fee.) After-hours crisis coverage is available by calling Counseling Services at 315.312.4416 and listening to the available options. The CrisisTextLine can be accessed by texting GOT5U to 741741. Lastly, the Oz Concern Navigator, oswego.concerncenter.com, is now available to point you to additional resources to help you address your concerns.

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 this page on plagiarism for an explanation of what we consider cheating. All parties involved in academic integrity violations will receive a score of zero for that lab/exam/assignment, and all violations will be reported. Repeat violations, including across semesters, will result in failing the course.

Accessibility:

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.