Course Structure

Web Only

This textbook was authored for the CIS 400 - Object-Oriented Design, Implementation, and Testing course at Kansas State University. This front matter is specific to that course. If you are not enrolled in the course, please disregard this section.

This course is taught in the “flipped” style. This means you will be watching videos and working through tutorials before you come to class. Your class sessions will be used for asking questions, working on and getting help with your projects, and taking exams.

For Online Students

Online sections of the course will not have in-person meetings on campus (although you can come to in-person office hours if those work for you); instead we will hold office hours and appointments meet over Zoom. You should ensure that you have a working webcam, microphone, and adequate internet connection for teleconferencing. Exams for distance sections will be delivered online.

The Big Software Solution

Up to this point, you’ve likely done a lot of what I like to call “Baby Projects” - programming projects that are useful to demonstrate a concept or technique, but really don’t do anything beyond that. In contrast, we’ll be building a large, multi-project software solution to meet a real-world problem - the software needed to run a fast-food franchise chain!

We’ll be building this software iteratively over the entire semester! Each week, you’ll turn in one milestone as a GitHub release, just like you might do as a professional software developer. Because each milestone builds upon your prior work, it is critical that you keep up. Falling behind will very quickly tank your grade and impact your ability to learn and develop strong programming skills.


The course is organized into modules focused on a specific topic, accessible from the Canvas modules menu. Each module introduces one or more topics, and 1) covers the vocabulary and concepts with assigned readings, 2) puts those concepts into practice with guided tutorials, and 3) tasks you with applying those techniques you just practiced in a weekly milestone.


For Fall and Spring semesters, each week will normally consist of two regular modules and the weekly milestone. The first module will be due by Monday, the second Wednesday, and the milestone on Friday. Each regular module will take several hours to complete, and milestones can often take ten hours or more. You should plan your learning schedule accordingly.

For the Summer semester, the regular 16-week course is compressed into 8 weeks. Multiple topics are grouped into a single weekly module. All module content is due by Friday of the assigned week, to allow for greater flexibility in when you complete the module. Be aware that these compressed modules take a lot of time to complete - you will want to schedule 15-20 hours a week to work on them at times when you are sharp!

The modules, and all of their associated assignments, are available through Canvas. You must complete each module item in order, and the prior week’s modules must be finished before you can move on to those in the next week. Be aware that if you procrastinate and don’t start until Friday, it is unlikely that you will finish. Which means you will fall behind. You can very quickly find yourself in a hole you cannot climb out of. So time management is a critical skill you need to be developing.


Remember that in the CS Professional Program, a grade of less than C in a professional program course (like CIS 400) results in a “Warning of Unsatisfactory Progress.” This warning sticks with you the rest of your time in Computer Science at K-State. If you earn a second, similar grade, you will be dismissed from the CS Professional Program!