CS 128 - Computer Science II - Fall 2023


As the second course in an introductory Computer Science curriculum, this course adds powerful concepts on top of the fundamental skill of programming you learned in the first course. From that course, you know how to give a computer instructions to manipulate data and solve problems. Now it's time to learn about patterns and tools that have proven to be extremely useful for solving problems and organizing data. Specifically, we'll learn about:

  1. Algorithmic Problem Solving, further developing our ability to achieve our goals with code.
  2. Data Structures, which are ways of organizing and structuring information in the computer's memory to make it easier to store and manipulate.
  3. Object Oriented Programming, giving us ways to organize data and code together to manage increasing complexity in our programs.

We'll be using the Python programming language, learning some additional features of the language beyond what was used in the first course.

For an idea of the specific topics covered in the course, see the rough schedule for the semester.

Other Pages

Semester schedule — tentative - see Moodle for up-to-date details.

Moodle — assignments, quizzes, announcements, and other online resources will be here.

Grading Rubric — the grading rubric that will be applied to any programming assignments.

Online Resources — textbooks, tools, notes, readings, and other resources will be posted here. I will link to relevant entries from Moodle, but it doesn't hurt to browse and see what else is there.


MWF 1-1:50pm / CNS E210
Tue 7-9pm / CNS E210
Instructor: Mark Liffiton
Office: CNS C207B   (2nd floor CNS, in middle of building over atrium)
Office Hours:
  • Monday 10-12am (by appointment — ask a day in advance)
  • Tuesday 10-10:40am; 2:30-4:30pm
  • Wednesday 10-11am; 2-3pm
  • Thursday 2:30-3:30pm
During my office hours, I will be in my office as well as available on Discord (see link on Moodle).
And generally, feel free to drop in any time if my door is open.
If your schedule prevents you from attending my set office hours or you would like to meet sooner than the next office hours you can attend, I will often be available on Discord, and I'm very happy to set up alternate meetings. Just ask.
Contact (you→me): We will use Piazza (see link on Moodle) for most course- and content-related questions. For anything specific to you, feel free to talk to me before or after class, meet me in office hours, stop by my office, catch me on Discord, or email (for email, please start the subject with "CS 128:").
Contact (me→you): I will post course announcements through Moodle, and they will be sent to your IWU email accounts. Check your IWU email frequently or have it forwarded to an address you do check.
TAs: Josh Reed and Shufan He
TA Office Hours:
  • Monday 11am-12:30pm (Shufan)
  • Wednesday 11am-noon (Josh)
  • Thursday 4-5pm (Shufan)
  • Friday 11am-12:30pm (Josh); 4-5pm (Shufan)
All in CNS E210.


There is no required textbook. I will provide free, online resources for concepts covered in this course.


The final grade will be based on the following breakdown:

Assignments / Labs25%
Exam 010%
Exam 115%
Exam 225%
Final Exam25%

Assignments / Labs

Assignments and labs will be posted on Moodle, and they will be collected there as well. Labs will be done in pairs, starting during the class lab session and due a week later. Other assignments will be done individually. I will describe the expectations for submitting each in the assignment.

Late Policy

Assignments and labs will be due at set times; they will be considered late at any point after that time. An assignment will lose 10% of the total possible points for every day it is late, and after five days it will not be accepted.

Assignments can't be accepted at all after solutions have been handed out or the graded work has been returned to the class.

Grace Tokens

Every student has two "grace tokens" that they may use for extensions in instances where they are unable to complete work by the assigned deadline. To use a grace token on an assignment, send me an email before the assignment deadline, explain why you need an extension, and we will determine an appropriate extension, which will be granted with no grade penalty. Some assignments may not be eligible for grace tokens due to immediate use of or feedback on the submitted work, but most will be. When using a grace token on a joint lab assignment, both students will use a grace token.


There will be three in-class exams during the semester plus a final. The final will be cumulative. See the schedule for exam dates.


As you may have heard from other teachers: If everyone does well, that's great! I'm not going to lower anyone's grade to fit some predetermined grade distribution. However, scores given on individual quizzes or exams (especially exams) may not translate directly into a letter grade on the traditional scale. As explained quite well here:

"A percentage shows how much of a particular exam was dealt with successfully, but what test is so perfect that it could completely determine extent of knowledge or ability? If a student gets a grade of 90%, it does not mean they know 90% of everything in the subject. Wise students will begin to look at scores as a place on a continuum of achievement rather than analysis carved in stone."


If you would like to request a regrade, submit a request to me in writing (via email) within one week of receiving the graded assignment, quiz, etc. Indicate exactly which part you believe deserves a different score and why.

Office Hours

If any concept, piece of code, compiler error, or anything else related to this course is ever unclear to you, please come see me or a TA during our office hours. One-on-one, we can help you bridge the gap from what you do understand to what you want to understand. It will generally be the easiest, fastest way to clarify something.

If you cannot attend any of our regularly scheduled office hours, I'm more than happy to setup another time to meet. Just let me know.

And to make sure that misunderstandings and difficulties do not go unaddressed, I will often ask that anyone who receives a C- or below on any assignment or exam come see me to see what we can do about improving that going forward.

Working with Others; Using External Resources

I strongly encourage you to form study groups with your classmates, compare notes, explain concepts to one another, and generally help each other learn the material in this course.

Any material turned in for a grade must be your own individual work, though. You may work on concepts with other students, but I ask that you not discuss assigned problems until after the work has been turned in. Giving or showing your solutions or code to another student or lab team — or looking at theirs — is not allowed.

This has two goals: 1) ensure that grades are a reflection of each student's own work, and 2) avoid situations where one person solves a problem and another records the answer as their own work without really learning.

Submitting code generated by a large language model as your own work is plagiarism. Copying code found online and submitting it as your own work is plagiarism as well. Copied code with a source cited will not be reported as an academic honesty violation, but if the code you've copied is a substantial portion of the problem you were supposed to solve, you may still lose points.

For details on the university's policies regarding academic honesty, please read the sections of the student handbook on conduct, cheating, and plagiarism. Academic misconduct can result in failing the course and a report to the associate provost. If you are ever unsure of whether something might be crossing that line, please err on the side of caution. You can also just ask me, and I'll be happy to provide guidance.


Illinois Wesleyan University strives to make all learning experiences as accessible as possible. If you anticipate or experience academic barriers based on a disability (including mental health and chronic or temporary medical conditions), it is your responsibility to self-disclose and provide documentation to the Office of Student Accessibility Services. Please note that accommodations are not retroactive and accommodations cannot be provided until I receive an email from Student Accessibility Services. Once the email is sent, please make arrangements with me as soon as possible to discuss your accommodations confidentially so they may be implemented in a timely fashion. For more information contact Student Accessibility Services by e-mailing accessibility@iwu.edu or stopping by their office in Holmes Hall.


Our university's mission statement includes, "The University through our policies, programs and practices is committed to diversity [...]" Our school and this course are made stronger by the mix of people that come into it bringing a diversity of ideas, experiences, and backgrounds. I expect everyone in this course — instructor, TA, and student — to contribute to an inclusive atmosphere that respects the diversity of all others in it. Dimensions of diversity can include sex, race, age, national origin, ethnicity, gender identity and expression, intellectual and physical ability, sexual orientation, income, faith and non-faith perspectives, socio-economic class, political ideology, education, primary language, family status, military experience, cognitive style, and communication style. The individual intersection of these experiences and characteristics must be valued in our community. If you have related concerns about the class environment or behavior of any in it (including me), you are welcome to raise them with me, and I will do my best to address them. If you are not comfortable speaking with me about them, you may also bring concerns to the Associate Provost or the Office of Diversity and Inclusion.

End-of-Syllabus Advice

Work consistently. Programming is a creative process, not a rote, mechanical one. Typing a line of code doesn't take very long at all, but coming up with the right line of code often requires thinking, writing, testing, deleting, reconsidering, rewriting, debugging, asking questions, sleeping on it, and finally getting it to work. You have to try things, see what happens, think about it, get help, rest... All things that take time. So the most successful students give themselves time to do all of those things by starting assignments when they are received and working consistently (not constantly) on their programs over time.

And that work can not be compressed into one solid block of time. Putting the work down to rest and come back to it later with a fresh mind takes time, and there's no shortcut to that benefit. Asking a professor or TA for help when you're stuck and waiting for a response takes time, but you can be doing something else until you get that help. So it's not that you have to work on an assignment non-stop from the moment it's assigned. Rather, you need to make time to work on it on multiple occasions, leaving room to put it down between the times where you are working on it.

page last updated Jan 07, 2024