Principles of Programming
Prof. Daniel R. Schlegel, PhD – 464 Shineman Center, email@example.com
Office/Lab hours: Monday 1-2pm; Wednesday 2-3pm; Friday 10:30-11:30am; and By Appointment. All on Zoom.
Section OY1: MWF 9:15-10:10am on Zoom
We are lucky to have six TAs this semester: Andrew Boyce, Cj Chiasson, Kate Gordon, Matt Grzenda, Lok Chi Hon, and Gregory Maldonado. Their office hours will be posted below once they have been established.
Office Hours / Course Schedule:
|8:00||Prof. Graci's Lab (L52)|
|9:30||Prof. Vampola's Lab (L57)
|10:30||TA Office Hours|
|Prof. Schlegel's Office Hours
|11:00||TA Office Hours|
|Prof. Lea's Lab (L54)
|11:30||TA Office Hours
|1:00||Prof. Schlegel's Office Hours|
|Prof. Lee's Lab (L55)|
|TA Office Hours
|2:00||TA Office Hours|
|Prof. Schlegel's Office Hours|
|2:30||TA Office Hours|
|Prof. Pantaleev's Lab (L53)
|3:30||Prof. Schlegel's Lab (L50)|
|4:00||TA Office Hours|
|TA Office Hours|
|4:30||Prof. Schlegel's Lab (L51)|
There is also tutoring available from the Office of Learning Services. Contact them for details!
The lecture portion of the course is online-only, with synchronous meetings and asynchronous assigned video lectures. The lab portion of the course is mostly in-person, with online sections available only for students not able to return to campus.
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.
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
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 Lynda.com
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, video recordings will be available for the synchronous lectures.
Attendance will be taken using Zoom. If you are not present at the beginning of class, you will not be marked as present.
Virtual 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. Please do not share class recordings or other video content from the course outside of the students in the class.
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. As stated above, videos will be posted, and you should use them to construct your notes if you do not complete them in class. 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
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, I will push you to practice throughout the semester, building your skills as a programmer by understanding the concepts and applying them.
|Participation / Attendance||80|
The default grading for the course will be along the university’s standard grading curve:
|Letter: Points||Letter: Points|
|A: 930-1000||C+: 770-790|
|A-: 900-920||C: 730-760|
|B+: 870-890||C-: 700-720|
|B: 830-860||D+: 670-690|
|B-: 800-820||D: 600-660|
All programming challenges 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. 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 or on Zoom 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. After the TA makes notes about your program, I will then review it and assign a final grade. The TA will provide you comments on your assignments along with a preliminary score, but my 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.
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:
- Prepare for the lab ahead of time by (a) attending class, and (b) reading through the lab in the Lab Manual.
- 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.
- 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.
- 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. This also applies to online sections, where you will need to have screen-sharing enabled during lab. Being late to lab or leaving early will adversely affect your grade.
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 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
If you are in an in-person lab, please be aware that we will distribute students between two rooms this semester in order to maintain social distancing. Rooms 444 and 446 Shineman will both be used. Room 446 has some computers pre-configured with the development environment but those should be reserved for students who are unable to use their own machines for some reason. If you don’t need those machines, you might default to going to 444 unless it is too crowded. It is obligatory that you wear a mask at lab, and maintain social distancing.
Quizzes are short (10-15 minute) multiple-choice or short answer assessments given on Blackboard for you to complete most Fridays of the semester any time during the day after class ends. These typically won’t involve any programming, rather testing your theoretical knowledge of what we’ve been covering in class, along with your ability to do things like read code and identify errors. (Programming and problem solving will be reserved for exams and programming challenges!) You will be able to take some quizzes for a second time if you don’t like your score – but be warned – you might get different questions! I’ll mention in class if the week’s quiz can or cannot be repeated (if it has short answer questions sometimes those need to be manually graded, so re-dos can’t happen). There will be 13 quizzes during the semester, and we’ll drop the lowest one.
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 internet sources and questions/answers from exams held during earlier instances of the course.
Exams will be given during weeks 7 and 12 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. Google Docs will be used for your exams – the exam will be shared with you at precisely the start time, and will automatically un-share when the time expires.
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
Control flow of programs
Modeling classes in terms of state and behavior
Making use of external libraries
Basic data structures such as ArrayList
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.
|1||Monday||8/24||First Day of Class|
Syllabus & Overview
|Complete the entry survey!
Read Chapter 1 of the Lab Manual
Introduction to Lab 1
|Friday||8/28||Algorithms and Algorithmic Thinking||Quiz 1 [Due Sat. 8/29 at noon - on Blackboard]|
MMW Example 1
|Programming Challenge 1 - Microworld Warmup due Wednesday 9/9|
MMW Example 2
|Quiz 2 [Due Sat. 9/5 at noon - on Blackboard]|
|3||Monday||9/7||NPW Problem Solving|
Big Idea: Program Like a Tailor
Three Circles Problem
|Wednesday||9/9||Big Idea: Stepwise Refinement|
Traffic Light Problem
|Programming Challenge 1 Due
Programming Challenge 2 - Microworld Problem Solving due Friday 9/18
|Friday||9/11||How to Read a Program||Quiz 3 [Due Sat. 9/12 at noon - on Blackboard]|
|4||Monday||9/14||Variables and Bindings|
|Friday||9/18||Computing things with Expressions||Quiz 4 [Due Sat. 9/19 at noon - on Blackboard]
Programming Challenge 2 Due
|5||Monday||9/21||Shapes World Problem Solving||Programming Challenge 3 - Shapes World Problem Solving due Tuesday 9/29|
|Friday||9/25||Control Structures, continued.||Quiz 5 [Due Sat 9/26 at noon - on Blackboard]|
|Wednesday||9/30||Discussion about Exam 1|
Practice Exam 1 posted on Blackboard
|Programming Challenge 4 - Nonrepresentational Artistic Expressions due Friday 10/16|
|Friday||10/2||Methods, Functions and Commands||Quiz 6 [Due Sat 10/2 at 11:59pm - on Blackboard]|
|7||Monday||10/5||Superficial Signatures, Method Anatomy practice|
|Wednesday||10/7||Testing exam procedures|
Loop trailer example
|Friday||10/9||Exam 1 given during class time!||Exam 1|
|Wednesday||10/14||Going over Exam 1|
|Friday||10/16||Going over Exam 1||Quiz 7 [Due Sat 10/17 at 11:59PM]|
|Wednesday||10/21||Arrays and ArrayLists|
|Friday||10/23||Arrays and ArrayLists||Quiz 8 [Due Sat 10/24 at 11:59pm - on Blackboard]
Programming Challenge 5 - Three List Interpreters due Monday 11/2
The Die Class
The Card Class
|Quiz 9 [Due Sat 10/31 at 11:59pm - on Blackboard]|
|11||Monday||11/2||Object Orientation, continued|
Practice Exam 2 Posted!
|Wednesday||11/4||Object Orientation, continued|
|Friday||11/6||Object Orientation, continued||Quiz 10 [Due Sat 11/7 at 11:59pm - on Blacboard]
|12||Monday||11/9||No Class||Programming Challenge 6 - The Inflatabe Household due Monday 11/23|
|Wednesday||11/11||Object Orientation, continued|
|Friday||11/13||Exam 2 given during class time!||Exam 2|
|13||Monday||11/16||Object Orientation, concluded|
|Friday||11/20||Quiz 11 [Due Sat 11/21 at 11:59pm - on Blacboard]|
|Friday||11/27||Thanksgiving Recess, No Class|
|Finals Week||Wednesday||12/9||Final Exam 8-10am!||Final Exam|
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. All parties involved in academic integrity violations will receive a score of zero for that quiz/exam/assignment, and all violations will be reported. Repeat violations, including across semesters, will result in failing the course.
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, firstname.lastname@example.org
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-