Sonoma State University
Computer Science Department
CS115, Programming 1, Fall 2024


Instructor

Oleksiy Al-saadi
he/him/his
Office Location: Darwin 116E
Zoom: SonomaState.zoom.us/my/oleksiyalsaadi
Email: alsaadio (at) sonoma (dot) edu

General Information

We meet synchronously in our designated class times at our designated classroom. Details for synchronous meetings are on the calendar in Canvas.

Prerequisites: GE Math eligibility (satisfaction of ELM requirement) and English eligibility (satisfaction of EPT requirement). Students who do not meet these prerequisites will be dropped from the class unless they obtain instructor consent.

Other courses requiring this course: CS215, CS242, and other CS courses for which CS115 is a prerequisite require achieving a C- or above in CS115.


Overview

Lecture, 3 hours; laboratory, 3 hours. An overview of computer organization; arithmetic and logical expressions, decision and iteration, simple I/O; subprograms; principles of good programming style, readability, documentation, structured programming concepts; top-down design and refinements; techniques of debugging and testing. Use of the above concepts will be implemented in a standard high-level programming language.

Section Time Location
1, 3
Mon/Wed 9:30 AM - 10:45 AM Salazar 2021
2
Thurs 9:00 AM - 11:50 AM Darwin 28
4
Thurs 1:00 PM - 3:50 PM Darwin 28


Objectives

Upon the completion of this class, you will be able to: A tentative schedule is provided below. Canvas shows the most accurate due dates for each assignment and the true pace of our activities. In-class activities are not listed and attendance is mandatory to participate.

Week(s) Topics and Activities
1
Computational Thinking
Quiz 0: Syllabus
Lab 0: Terminal Basics
ZyBooks Ch. 1
2
Lab 1: Mr. Espresso Machine
Homework: Tic-Tac-Toe
ZyBooks Ch. 2
3
Errors and Loops
Homework: Basics of Python / Morphing Toads
Quiz 1: Computational Thinking
ZyBooks Ch. 3
4
String Manipulation and Functions
Lab 2: Jack and Rose
ZyBooks. Ch. 4
5--6
Zork
Project: Text Adventure
Quiz 2: Code Abstraction
ZyBook Ch. 5
7--9
Matrices and Memory
Homework: ASCII Arrow
Homework: Portrait of an Umbrella
Project: CitySim
Quiz 3: Data Structures
Midterm ZyBooks Ch. 6
10--12
Object Oriented Programming
Homework: Tournament Simulator
Lab 3: Steganography
Project: Marbles
Quiz 4: Classes and Objects
ZyBooks Ch. 11
13--14
Recursion is Recursion
Homework: Toads and Frogs with Recursion
Lab 4: Labyrinth
Quiz 5: OOP, Geometry, Memory, Recursion
ZyBooks Ch. 15
15--16
Project: Land Generation
Lab 5: x+ on Paper
Final

Materials

Coral Programming Language -- we will use this web-based tool during the computational thinking module. It is freely available.

Zybooks: Programming in Python 3 -- we will use this e-book. It will require a subscription. To access, click any ZyBooks assignment within Canvas. A subscription is $89. Do not go to the ZyBooks website and create a new account.
Algorithmic Puzzles (By Anany and Maria Levitin) -- we will use this book throughout the course. It is freely available.


SSU Email - I send emails regularly throughout this course. You are required to check your email often.


Canvas - Canvas always holds the most current and authoritative set of due dates, exam dates, assignment instructions, and other course material. Course announcements will be done via Canvas (which also sends these to your sonoma.edu email address).
Piazza - We will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates and myself. Rather than emailing me, I encourage you to post questions on Piazza so everyone benefits from my response. Piazza gives you the option of sending messages to me that are anonymous, too.

Grading

Your final grade consists of the following components:

Grading Scale

Note: The instructor reserves the right to add up to 0.5% to the final grade when evidence that most extra-credit opportunities on programming assignments were taken, as well as several questions asked and answered on Piazza. No other adjustments of borderline grades will be considered.


Late Policy

An important part of your education and professional development in college is about learning to independently manage work and deadlines. This skill is incredibly authentic and valued by employers. It is a disservice to you if I act like deadlines do not matter. Moreover, lectures are often tailured to the current open programming assignment(s), and new concepts need to be applied quickly to be retained in memory. There is a late policy in effect.

All programming assignments can be turned in up to 48 hours late and are subject to a 10% penalty per day, even if turned in minutes past the due date. Exceptions are granted only for specific circumstances such as illness or emergency. Only your most recently submission will be graded (e.g., if you submit an incomplete program before the due date and then submit a complete program after the due date, I will grade the late submission.) In the case of other issues that cause you to be unable to submit your programming assignment, do not make edits to your program. I will check when your code was most recently edited and that it was not worked on after the due date/late deadline.

Quizzes and ZyBooks have a strict completion deadline. In-class activities cannot be made-up after the deadline which is normally the end of class in order to encourage attendance.

Administrative Drops

If you do not indicate your commitment to taking this course in the first two weeks of the semester, you may be administratively dropped from the class. In this course, your commitment is evidenced by:
Regrade Policy

Regrade requests will be accepted up to 1 week after a graded item is returned. The reason for the regrade request must be explained in email, with a copy of the assignment to be re-graded, to the instructor's university email. Note that all regrade requests, except for those pointing out mistakes in the totaling of points, will cause the entire assignment to be re-graded. The adjusted grade may therefore be higher or lower than the initial grade.

Incomplete Grade Policy

It is the policy of the Computer Science Department that a grade of Incomplete (I) shall be assigned only when the instructor concludes that a clearly identifiable portion of course requirements cannot be met within the academic term for unforeseen, but fully justified, reasons; and when there is still a possibility of earning credit.

An incomplete shall not be assigned when: The condition for removal of the Incomplete shall be entered on the “Request for Incomplete” form and a copy filed in the department office prior to listing an “I” on the Grade Roster. The student must retain the grades for any coursework that was due prior to the incomplete being assigned. An incomplete grade cannot be removed on the basis of work taken at another institution nor by re-enrolling in the course.

An incomplete must be made up within one calendar year immediately following the end of the term in which it was assigned. This limitation prevails whether or not the student maintains continuous enrollment. Failure to complete the assigned work will result in an incomplete “I” being converted to a “NC” which will affect the grade point average.

Academic Dishonesty

Collaboration is a complex idea in the programming world, since professionals routinely work in teams sharing code; they also navigate a variety of complex intellectual property rules that sometimes encourage (and sometimes discourage) sharing code more generally. In our class, the collaboration policies are more artificial than the real world since they are designed to support you, as a beginner learner, to grow towards mastery and independence.

Generally, I encourage you to seek help from and provide support to your peers, but only in ways that do not steal learning opportunities from them or from yourself. I call this "supportive collaboration." It is not only allowed, it is encouraged.

Warning: The boundary between collaboration and plagiarism is often unclear. Once you see someone's solution, it is hard to unsee. It is safer to collaborate without looking at each other's screens. Use drawings to communicate ideas. Use references to past labs and class resources to establish common ground ("I just modified everything after line 40 in the textbook solution to 9.4, and that really helped me as a guide"). Help identify tools that are useful ("I found using a while loop was helpful") without sharing code. If you just share your screen and show someone how you did it, you are robbing them of a learning opportunity.

In particular, you are responsible not just for understanding every line of code you write, but also for knowing what would happen if your code was modified in some way or how to modify it to accomplish some nearby task.

There is no collaboration of any form allowed on exams or quizzes, unless explicitly directed. Generally, graded work is to be completed by the individual student unless otherwise specified and following the university’s policies on academic integrity. Academic dishonesty will be severely penalized; at a minimum, you will receive a grade of 0 on the assignment. For more information, see SSU's cheating and plagiarism policy and the Dispute Resolution Board website.

Copying any code provided by artificial intelligence (i.e. ChatGPT) will result in an automatic 0 on the assignment.

Accomodations

Disability Services for Students

If you are a student with a disability, and think you may need academic accommodatio ns, please contact Disability Services for Students (DSS), Voice: (707) 664-2677, TT Y/TDD: (707) 664-2958, as early as possible in order to avoid a delay in receiving a ccommodation services. Use of DSS services, including testing accommodations, requi res prior authorization by DSS in compliance with university policies and procedures . See SSU’s policy on Disability Access for Students.


Athletic Schedules

To student athletes: I value your identity as a scholar/athlete. Please notify me before the end of the drop/add period about any possible game conflicts with our class schedule (and as soon as possible about subsequent changes).