Subsections of Weekly Updates

Spring '26 Week 1

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week one announcements video for CC410 in spring 2026. My name is Russ Feldhausen. I’ll be your instructor for the semester. My contact information can be found here on this slide. One thing to note, I do work remotely most of the time, so I’m going to be working from home four days a week, but I will generally be on campus on Tuesdays. My Tuesdays are usually pretty booked up with meetings already, but if you want to meet with me on Tuesdays, early in the morning is the best time to do that in person. But otherwise, I’m available the rest of the week working from home. So feel free to reach out anytime.

So welcome to CC 410. CC410 is an advanced programming course. It is kind of the end of the computational course sequence of courses that make up the computer science certificate. It’s also a core piece of several other majors, such as integrated computer science, the DIGIN degree, GIS students, things like that. So we get a lot of students in this course from differing backgrounds, and this is meant to be kind of a capstone to get you comfortable with the idea of building programs from scratch yourself. And so the big picture in this course, we’re going to spend some time talking about object-oriented programming. We’re going to teach you a lot of unit testing and design patterns, which I think are really important larger scale concepts in programming. We’ll teach you how to build some user interfaces using traditional graphical user interfaces as well as web interfaces. And we’ll briefly get on the idea of serialization and saving your data. We don’t get into databases in this course. That’s a follow-on course if you want to take that. And we really do this through three things. We have these long-form example projects where I give a smaller version and I work through a full example right here in code. It takes about 45 minutes to an hour for those examples, but I show you every single step of the process in an example project. And then you take that example project and you adapt it and scale it up for the restaurant project that you’re going to work on throughout the semester.

We’re going to build a point of sale system for a fictional restaurant as our major project. And it’s a long form project we’ll build all 16 weeks of the semester. And then in the background, you’re also going to be working on a final project. Your final project is something of your own design that is completely your own work. It’s meant to somewhat align with the restaurant project, so I encourage students to find something that kind of fits in the same realm as the restaurant project so you can reuse a lot of the code and ideas for the restaurant project in your final project. The other big thing about your final project is it’s meant to be a lot smaller than the restaurant project. A completed restaurant project could be anywhere from 10 to 15,000 lines of code. Your final project, I’m expecting closer to 2,000 to 4,000 lines of code. So it’s much smaller in scope and scale, but it’s supposed to be really the first instance in this program that you’re going to build something completely from scratch of your own design. So I’m really looking forward to that.

In this course, we introduce a lot of new technologies that you’re going to use. For example, Git and GitHub Classroom, which are Git is a standard tool we use for keeping track of code versions in software engineering. So it’s a really good tool for you to learn for industry. Since we’re working in Python, we’re going to use TOX as our automation tool. This automates a lot of the steps of doing type checking and unit testing and style checking that we’re going to talk about. And as you can see below, we’re going to teach you how to do type checking, unit testing, style checking, and writing documentation for your code, all just like you would do an industry. So this is really meant to be kind of an industry prep class to start putting those pieces together that if you get a software engineering job or a coding job out in industry, they’re going to expect you to know how to do a lot of these things.

So like I said, in this course, we have a final project. It’s going to align with your interests and let you use some of your new skills. We’re going to discuss the scope and scale of your project throughout the semester. You’re going to meet with me four times throughout the semester just briefly to discuss the final project, see what ideas you have, see if I can help a little bit with the design step. And actually that first milestone is coming up at the end of this week. So one of the first things you’re going to do in the first couple of modules is schedule a time to meet with me one-on-one outside a class so that we can talk about final project ideas and just get a sense of what you’ve got in mind. It’s also a great chance for me to get to meet all my students. This class is typically a little bit smaller. I only have about 10 students every semester. And so I really like to meet with my students individually one-on-one to get to know you a little bit better, to let you get to know me a little bit better, just so we have a more comfortable working relationship so that you feel comfortable if you have questions or concerns. You can come to me anytime. And then the final project at the very end, instead of presenting to the class, we’re just going to do videos. That seems to work a lot better. So you won’t be presenting directly to the whole class, but you’ll be recording a video and presenting it for me to review your project.

So we’re on week one. This is the first week of the semester. So the big thing on week one is what I call administrivia. It’s all of the syllabus and schedule and whatnot. So go through that module. You’re going to kind of see what this class looks like. And then we immediately dive in headfirst with a project that I call Hello Real World. The Hello World project is a pretty classic first project that you do in a programming language. We’re going to do that again, but this time we’re going to do it as if we were a real industrial software engineering firm. We’re going to add unit testing. We’re going to add type checking. We’re going to add all those design bits and pieces to a hello world project that makes it feel more like the real world. So I like to call it hello real world. Don’t worry, this is an example project. I walk you through all of it, but hopefully it will open your ideas to kind of what we’re trying to do in this class. You also should be scheduling your first final project meeting this week. The meeting itself doesn’t have to be held this week, but you should schedule it by the end of the week, probably for sometime during the second week, of course. We’ll also introduce you to how to get office hours, how to communicate with me, and then you’ll get to introduce yourself on the Ed Discussion platform. I know some of you already have done that, which is great. Others, I hope to hear from you later this week just to get to know you and see that you can get to the Ed Discussion platform and introduce yourself there.

Then we’re going to jump right in. The second week of class, we’re going to start talking about building an object-oriented programming class library that represents the menu for our restaurant. This is one of the big milestones. It’s already 2,500 lines of code for my model solution. However, it is mostly boilerplate code. So if you’re thoughtful, you can copy paste pieces of code and reuse them. So be a little careful as you go through this project. Don’t feel like you have to write every single line of code from scratch. If you use some good design and you use some good thinking, you can duplicate your code in places and make it go a lot quicker than it might originally seem.

Then on week three, we’re going to add unit testing. We’re going to basically take our classes that we built in week two. We’re going to add unit tests and documentation to those classes. This adds about 4,000 lines of code. Again, lots and lots and lots of repeats, but it gives you a chance to catch any errors that you made during week two. So we really dive in headfirst on these first couple of milestones.

Then during weeks four and five, we’re going to have another milestone where we’re going to take our existing project and we’re going to refactor that code to add some inheritance and polymorphism. This is something that we talk about a lot, but we don’t train you to do very well is refactoring existing code to fit a new structure or a new design. So we’re going to practice that in weeks four and five. And then by the end of week five, which is going to be toward the end of February, we’ll have our second project milestone where we’ll meet again and we’ll chat about what’s going on in the class.

And then beyond that, week six through, I think six through 10, we’ll spend some time on graphical user interfaces and working with external libraries. Then we’ll shift over and do a simple web interface and do some serialization. And that right there will get us toward the end of the class. So for this class, you do get a choice of restaurant project.

There are two projects available. Game Grub is the restaurant project that is currently linked in Canvas. It’s around fictional board games. So Game Grub is going to be the easiest one to do just because it’s the one directly linked in there. However, if you want to be different or you want to do something that’s not based in board games, you can do Starfleet Subs, which is a Star Trek-inspired submarine restaurant. So sub sandwiches, it’s available online and it’s linked everywhere so you can find it. If you are retaking this course and you have done one of these projects in the past, you need to do the other one for your retake. So just be aware of that. I’ll be kind of watching for that. And if you are doing a retake and you have any issues with GitHub Classroom, let me know and I can go in and clear out your existing repos so that you can start fresh from there. So feel free to choose your restaurant project. There are two of them out there. They’re both similar in scope and scale and structure. They just have different themes just to give you a little bit of different flavor for this particular project.

So some big advice for this class. This is a four credit hour programming class, and that four credit hours we take very, very seriously in this class. Four credit hours, according to the K-State definition of a credit hour, expects you to spend roughly three hours per week per credit hour on this class. So we’re expecting 12-ish hours per week for an average student. That means some students may need more. That means some students may be less. But we have tried to even it out to four credit hours. In years past, I have done an analysis on the time that students spend on Codio, and it does come out to about 12 hours per week. So I’m just telling you now, that’s kind of the expectation for this course, and you should schedule your time wisely based on that. The number one reason that students fail in this class is not due to the difficulty of the material. I very rarely have had students really struggle with the difficulty of the material. They struggle with the time management and keeping up in this class. And once they fall behind, it’s really, really hard to get caught back up without adding an additional amount of time to your weekly schedule to get caught back up.

So what I usually tell students in this class, if you want to be successful, start on your projects as soon as you can. Start working through the example project as soon as you get there and leave lots of time to ask questions. I’m always available. I usually try and answer questions as quickly as I can. Sometimes it may take me a little bit longer, especially over the weekends because I’ve got other things going on. So leave yourself time for questions. Don’t try and do the assignment like the day before it’s due because that’s going to be tricky. If you’re going to copy paste your code, make sure you do so carefully. I see a lot of students that will get a piece of code working, copy-paste it somewhere else, and then they don’t carefully edit the code or they have little typos or misspellings in that code that they tried to edit quickly, and then it doesn’t work. So copy-paste carefully, test your code carefully, and then use Git frequently. You can commit to Git frequently. Anytime you make a change, you get something working, you should commit to Git. That way, if you do something else and you break things, instead of having to figure out how to undo all of that, you just revert to your previous commit and try again much faster once you get used to that.

And then, of course, the last big thing in this class, you’re welcome to use any online resources that are available as long as you cite them. This class is not so much about teaching you how to do programming, but how to do bigger things with programming. So for example, if you don’t remember how to find the sort algorithm in Python, go look it up, use that algorithm and cite it somewhere. You don’t really need to know all of that stuff. This is how we’re programmers work. We look at stuff on Stack Overflow. We talk to ChatGPT and we try and get those things that we need and then we cite them. I’m going to talk about generative AI in just a second, but just be aware, I don’t mind if you use online resources as long as you cite them. Generally, don’t have something online that does all of the code for this class, but little bits of code like I don’t remember how to sort or I don’t remember how to construct this object. Go find out and cite whatever resource you find in your code.

So like I talked about, the new thing I’m doing this semester is I have made a generative artificial intelligence policy. This policy is meant to cover all uses of generative artificial intelligence in this course. So we’re talking about ChatGPT, GitHub Copilot, Claude, any of those tools that are generative AI, that allow you to chat with it, that allow you to ask it to do things for you. What I have done is I’ve gone through every single assignment in this class and I have marked it with a simple stoplight marker for green, yellow, red.

Red means that Gen AI use is prohibited. I want you to do your own work without any reference to generative AI, either asking it questions or having it do your work. I do this for two reasons. Most of these assignments are either formative things, such as the example projects where I’m trying to teach you a new skill. And so if you have Gen AI do that, then you’re not learning the skill. It defeats the whole purpose of this class. A common thing we say in education is the person who does the work gets the learning. And so on things that I have prohibited Gen AI, it’s because I want you to do the work because that’s how you’re going to learn it. There are a couple of other things, the assessments and quizzes. Again, that’s me assessing your understanding of the content, not Gen AI’s understanding of the content. And so I don’t want you using Gen AI on the quizzes, on the concept quizzes. I want that to be your own work and your own ideas so that I can get a good idea of how well you understand what’s going on. And if I need to add more content or change things, this will help me know. So that’s that.

A lot of the milestones and things are marked as yellow, where you can make limited use of Gen AI. When I say limited use, and I have an entire video both in the syllabus and after the syllabus about this in detail, basically when I say yellow, I mean use it as a chat tool. You can ask it questions. You can say, hey, hey, chat GPT, how do I do this? Or how does this supposed to look? What you should not do is say, hey, chat GPT, here’s my assignment description. Tell me all of the code that I need to do. I don’t want you doing that because, again, that’s not really doing the work. That’s just having something else do what you’re supposed to do. But if you want to chat, it’s like, hey, Jack TPT, how do I sort a list or how do I organize this? Or how do I refactor this code to add this feature? That’s a really good use of Gen AI. There are some rules around citing Gen AI that you should read in the syllabus and watch in the video. And I give some examples of how to do that. But I’m trying to make it so that you feel more comfortable using Gen AI in a limited way, but doing it out in the open. So you don’t feel like you have to hide it from me or lie to my face and tell me, oh yeah, I didn’t use ChatGPT on this. Because I absolutely do know. I’ve had students in the past that have turned in code that I know they don’t understand and I know they didn’t write it, but they don’t really feel comfortable telling me where they got that code from because they’re worried I’m going to come down on them. And I don’t want to do that. I want to really understand how you’re using Gen AI, but I also want to show you a more appropriate way to use Gen AI in this class and in industry itself. So that’s where we’re going with this.

There are a few places that are marked as green. Generally, those are design elements. So things like your user interface design, your web design, things like that, that are not generally the point of this class. Gen AI is encouraged. Feel free to use Gen AI to help generate really cool buttons and interfaces and things for your programs. That’s a great use of Gen AI. That’s not something I’m trying to teach in this class. So feel free to go nuts on those parts that Gen AI is encouraged because I really want to see your creativity and really want to see how you can use those tools in an effective way.

So to go along with that, because I’m putting guardrails on Gen AI, I’m also going to disclose any times I use Gen AI in this course. I’m going to guarantee you that any grading and feedback you get from me is 100% my work. I’m not going to put your stuff through Gen AI to do grading or feedback. I have heard stories that there are some faculty that do that, not in this department, but other places. I don’t believe in that. You’re paying a lot of money to go to college. And part of that is my grading and my feedback on your work is a really important piece of that. And everything you’re going to get from me is 100% from my brain. So just be aware of that. Same thing with student communication. I will not answer student emails or ed discussion posts or anything with Gen AI. Ed Discussion itself does have some Gen AI tools that will try and automatically answer student questions. I have turned all of that off. I’m going to do it all myself. So again, you’re going to get my view on things, not anything from generative AI. I do reserve the right to use limited Gen AI usage when developing lesson and learning content, such as things in the textbook and milestones. A lot of times I’ll use it to generate ideas for restaurant project names or menu items and things like that. As of this recording, there is no Gen AI content in this course. I have not made use of it in the past, but as I work on future work in this course, I may take advantage of some limited use of Gen AI to generate new content. So just be aware of that. I want to be open and honest about my use of Gen AI because I’m expecting the same from you as my students.

So that’s a quick introduction. I apologize. It looks like this video is running about 16 minutes. That’s longer than most of my announcement videos will be. Generally, I try to keep them in the five to 10 minute range, but first video, got a lot to talk about. So this semester, feel free to keep in touch. Number one best way to keep in touch is via the Ed Discussion board where you do your introduction post. I will probably post some mega threads through there for the first few milestones here soon. So that’s a great place to discuss things on those milestones. I’m also available on Microsoft Teams through K-State. So if you’re on the K-State Teams platform, you can find me there. I also host tea time office hours through the computer science department. You’ll probably hear more about that in the next couple weeks as we get that scheduled. And then, of course, you can always schedule one-on-one office hours with me using the booking link that you’ll find on the Canvas homepage and on the bottom of every email that you’ll ever receive from me. Just click that link, shows you my calendar, lets you schedule one-on-one office hours with me anytime. So feel free to reach out anytime for that. And you’ll use that link to schedule those final project discussions that we talked about earlier in this video.

So that’s all I’ve really got on my mind for week one. Generally, you’ll see a video like this get posted probably Monday every week throughout the semester. It’s just a quick announcement. These would be the things I would normally say at the beginning of an in-person class to get you up to speed on what’s going on this week. So feel free to watch these videos. They’re going to be chock full of useful information and hits and tips and tricks about the semester. But I want you to know I’m rooting for you. I know you can succeed in this class and I want to do everything I can to help you with that. So please let me know how I can help. Best of luck as you get started and I will see you again next week.

Spring '26 Week 2

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week two announcements video for CC 410 in spring 2026. So hopefully right now you should be wrapping up the first module in this class which includes the Hello Real World project. That project gives you a really good idea of the structure of the project we’re going to use in this class and it introduces you to some new topics that you maybe haven’t seen before such as type checking, unit testing, things like that. And then you should also be scheduling your first final project check-in with me sometime within the next week or two. That can be a really short meeting. It usually only takes 10 to 15 minutes, but it’s just a chance for me to meet you virtually, see if you have any questions at all about what’s going on, and then also talk a little bit about what’s going on with the final project in this class, just to give you a heads up as we get moving forward.

So this week we’re going to shift gears and start talking about object-oriented programming. We’re going to do an example on building a set of object-oriented classes to represent the menu for the restaurant project that we’re working on. And this is really the week where you get to choose which restaurant project you want to work on. Remember, you can either work on the Game Grub project, which is the current one linked in the course, or you can work on the Starfleet Subs project, which is an older one that has a lot of the same structure and information in it. They’re pretty much interchangeable. They’re just different restaurant menus to give you a little bit different flavor of what’s going on in the class.

So other than that, hopefully everybody’s found the Ed Discussion board and introduced yourself. If you haven’t done that yet, make sure you get that done ASAP. Ed Discussion is where we’re going to have a lot of the back and forth in this class. It’s a great place to post questions. I’ll post some mega threads in there for a while and see if those get used a whole lot. If they do, I’ll keep posting them for the rest of the semester. The other big thing in this class as far as grading, you’re going to see your grade in two different places. The first thing is I’ll see grading rubric comments on Canvas. So anytime where you lose points or anything there, that will all be in Canvas in the grading rubric. I will also leave some code comments in GitHub, especially on these first few projects where I can leave a lot of comments about structure and usage. Later in the semester, I tend to leave fewer comments because your projects kind of diverge at that point. And so as long as your code works, I’m not too concerned about following a specific structure. Other than that, hopefully things are going well in this class. I think so far I haven’t had any major complaints. I know a couple people have had issues with GitHub Classroom that I’ve been working on, but otherwise, hopefully things are going well.

So like I talked about for the first milestone, we’re going to work on object-oriented classes to represent the restaurant project in this class. It’s going to be a lot of boilerplate code to really put this all together, so be aware of that. A lot of that boilerplate is just classes and things that you’re going to need to represent the menu. So you can make things a lot easier on you by making those classes and then copying them very carefully. You can also make your things easier by focusing on style and documentation now. Even though a lot of those aren’t going to be enforced until milestone three, you can start practicing that right now by making sure you match the style guide and you have documentation comments on your code. In general, I expect this milestone to take anywhere from three to eight hours to complete, depending on how efficient you are. For comparison, when I was working on the model solution, I think I did this whole milestone in about an hour, but I’ve got a lot of experience. And so three to eight hours, I think, is where I’d expect you to be right now. It’s going to be anywhere from 1,500 to 2,500 lines of code. And as always, if you have any questions, if something in the milestone description doesn’t make sense, feedback is always welcome. Just let me know.

After this milestone, then we’ll start talking about documentation, unit testing, inheritance, polymorphism, all of these cool topics. So this class is going to ramp up pretty quick, introducing some new topics as we get through the month of February, which is coming up very shortly. So other than that, hopefully things are going well. If you have any questions or concerns, let me know. Otherwise, best of luck this week, and I will see you again next week.

Spring '26 Week 3

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week three announcements video for CC410 in spring 2026. So, this week you should be wrapping up the second module, which is on object-oriented programming. You’re going to do a quick example project on building an object-oriented programming data classes for a restaurant project, and then you’re going to do the first real milestone of the restaurant project where you’re going to build a bunch of data classes to represent the menu. This week, we’re going to move on to some new topics around documentation, unit testing, and modeling our code using UML. You’re going to do a quick example of adding documentation and unit testing to what we did previously. Some other stuff that you’re going to do, and then you’re going to work on the restaurant project where you’re going to add unit testing to the project itself.

So this milestone, you’re going to write unit tests. I would estimate, I expect around 400 total unit tests, including all of the different parameterized ones. You’ll add documentation comments to all your code. You’ll build a class diagram for your code. This milestone, again, can take anywhere from three to eight hours and is anywhere from 3,000 to 4,000 lines of code. Again, the big thing to keep in mind, a lot of these unit tests are going to be repeatable across classes. So if you get a unit test that works really well for one class, you can probably reuse it for other classes. And I’ll actually show you an example of one way to do that. So while it may seem like there’s a lot of code, I don’t expect you to write every single class, every single line. I really want you to think about the overall structure of the code and how you can repeat those different structures across different classes. And as always, feedback is welcome if you have any questions on any of the projects.

So for milestone two, my biggest hint is do not look at your source code when you’re writing your unit tests. Instead, you should look back to the original documentation to make sure things are right. For example, if the price of a particular item is $4.75, but you wrote it incorrectly in your source code as $4.65, then if you write your unit test to verify your source code, you’re going to have the same wrong price. I want you to go back to the menu and look at that price and use that to write your unit tests. You know, you may have to look at your source to understand exactly what the function names are, but go back to the original menu to look at all the details and make sure that you’re meeting that. Use global attributes in your files, and I’ll talk about that in just a second. Use generalized unit tests, so things that are actually repeatable in your classes, and look at using parameterized tests for anything that use enums.

So here’s a quick example of how you can do generalized unit tests with these global attributes in a class. You’ll notice up here at the top, I have the price and the calories as a global attribute in my test class. And then I have methods below that that just confirm that the price is correct and that the calories are correct based on that attribute. So what I can do is I can copy paste this entire class. I can do a quick final replace for the Riker to change that to be whatever class I’m trying to test. And then at the top of the file, I change the price and the calories there. And boom, I can now test another file using this same piece of code. It’s possible that you could even make this a little bit more creative, but this is kind of what I mean by making your tests a little bit generalized so they’re easier to copy, paste, and edit as you go through things.

So other big thing to keep in mind in this class is a growth mindset. The milestones in this class are challenging. Those of you that I’ve met in person already, I have tried to emphasize this as much as I can. So you’ll need to read carefully. You’ll need to ask for clarification. You’ll need to start early and work methodically. And then, of course, the big thing is to make sure you’re committing to get often so that if you make a mistake, you can work backwards. But I guarantee most of this content is not challenging in terms of the content. It’s challenging in terms of the scope and scale. And so as long as you go into it with a growth mindset of, I can do this, I can learn how to do this, I can go through these motions and get better at this, you’re going to be just fine. So go into it with that positive mindset and I think it’ll work well.

Looking ahead after these modules, next week we’re going to talk about inheritance and polymorphism, which is another big topic in object-oriented programming. Then we’re going to have a debugging lab. We’re going to talk a little bit about debugging and logging and some other things that we’re going to do in this class. And that will already get us to the end of February where you’re going to schedule your next final project check-in where we’ll talk about project ideas. Then we’re going to switch over and do design patterns and test doubles in module six and seven. I think those are the most important modules in this entire class. And then we’ll switch over and talk about user interfaces, web, et cetera, from there.

A couple of quick things on my schedule coming up tomorrow, February 3rd. I’m at a conference in Manhattan. I’m going to be there all day. And so because of that, my response time and my grading might be a little slow tomorrow. It’s usually my day on campus, but I’m actually going to be stuck at a conference all day. And then coming up in two weeks, I have another conference in St. Louis that is February 17th through 22nd. That is a really big involved conference. It’s the big one I go to every year. Usually it’s scheduled over spring break, but this year it’s a lot earlier. Because of that, that week there will be slower email responses and slower grading responses. I will try and get back to you, but especially the Thursday and Friday of that conference, I’m going to be booked solid all day doing conference stuff. And so emails will probably get responded to in the evenings as I get a chance. So just be aware of that. I’ve got a couple of things coming up on my schedule that may make me a little bit harder to get a hold of. But hopefully we can work around that and everything will be just fine.

So hopefully things are going well in this class. Now we’re going to start working on testing our code, which I think is a really important thing to learn, especially for working in industry. The big expectation in a lot of industries is every piece of code you write, you’re going to write several unit tests for it. And often in large-scale corporate functions, the amount of code for unit testing is sometimes larger than the amount of code in the application itself. So it’s a really important topic to learn. I hope this milestone goes well for you. As always, if you have any questions, feel free to let me know. Otherwise, good luck. And I will see you again next week.

SPring '26 Week 4

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week four announcements video for CC410 in spring 2026. So, right now, you should be wrapping up the second restaurant milestone, which is all on adding documentation, unit testing, and UML diagrams to your project. You’ll do a quick example for adding documentation and unit testing to an existing project, and then you’ll be working on your restaurant project to add unit tests to test all of the code that you wrote for the first milestone.

So going back to that first milestone, a quick note on grading, you’ll find rubric details in Canvas. So anytime that points were deducted from your score, that will be detailed in a rubric in Canvas. But then I will leave detailed feedback in a GitHub pull request. Take a look at those. The things I leave in GitHub are usually things you’re going to want to address before the next milestone is due. However, in that feedback pull request, there’s a button at the bottom that says merge. Don’t merge that pull request. I will do any of that that I need to do. If you merge it, then I don’t see your changes as cleanly. And so it helps to just leave it alone for the first few milestones. So just leave it as is, but you can read that feedback and address those things as you work on milestone two. The other big thing I saw is don’t forget to make use of tools, especially MyPy, but also now that you’re doing documentation and unit testing, you should be using tox, just like we saw in that Hello Real World project. There were a lot of issues that I saw that MyPy would have pointed out to people. And usually I posted a screenshot in your GitHub feedback that showed MyPy would find this error. So make sure you’re making use of MyPy to find those structural syntax errors in your code so that you know that it’s going to work. Probably as you’re working through this milestone, you’re running into some of those problems. And MyPy is a thing that will definitely help with that.

So this week we’re going to work on the third restaurant milestone where we’re going to introduce inheritance and polymorphism into our project. This is a really fun project because we’re going to do a little bit more refactoring with our code instead of writing new code. So hopefully this is a really fun time to kind of get dig, dig deeper a little bit into the object-oriented structure of our code. The other big thing that’s going on this week is you’ll have time to complete a start, stop, continue survey. In brief, that’s a kind of mid-semester T-valve for me. Basically just asks you if there’s anything you want me to start doing, anything you want me to stop doing, and anything you want me to continue doing. I read all of these. I take them very seriously. If I can make changes, I will. Sometimes students ask me to start doing something or stop doing something that I really can’t change, but I will take it into account. And then you’ll have some time to be thinking about your final project because we’ll start meeting here toward the end of February to discuss final project ideas.

So after that, we’re going to introduce debugging and logging. Oh, and this week you don’t have a restaurant milestone due. It’s going to be a bigger milestone that’s due after next week. So you got two weeks to work on it. So we’ll have debugging, logging, and Lambda expressions next week. That’s when the third restaurant project is due and also when you should be scheduling the second final project milestone. You’ll notice if you look at my calendar, I am out of town most of next week for a conference. And so we’ll probably actually meet the week after next to start talking about your final project again. So once we get to milestone three, all general requirements are going to be required. So documentation, unit testing, style guide, all of that is going to be required. You’re going to have to refactor some classes, add some new unit tests. But the nice thing is this one’s only about 1500 lines of code that are new or changed. So it’s not as big as the other two, but it’s probably more structurally complex. You’ll also need to update your UML diagram to reflect the changes that we’ve made to your project.

So as with everything, milestone three, work in small chunks, commit early, commit often. This is also a good chance if you want to try test-driven development. Try and write the unit tests before you change things. The two big hints I give you on this one is you’re going to write an item class. I think I used to call it order item, but I think now it’s just called item. You’re going to have this item interface that you need to inherit on everything. The easiest way to do that is inherit it on your base classes. So your base entree, your base side, and your base drink. And then those get inherited by all the individual classes. And so item gets inherited transitively. You don’t have to explicitly inherit the item class on those subclasses. The other big thing, this one gets a little bit more complex on syntax. So if you have any questions on syntax and Python for doing this object-oriented polymorphism, just let me know.

So after this, then we’ll spend some time on inheritance. Then we’ve got debugging. We’ll have final project. And then we’ll spend some time in modules six and seven talking about design patterns and test doubles. I have said it before. I’ll say it again. I think those are the two most useful milestones in this class. And then we’ll switch gears once we get past spring break to do user interfaces.

So hopefully things aren’t on fire. We’re on week four of the semester. This is usually when students report that they start getting busy. So hopefully things are going well. As always, if you have any questions, let me know. Otherwise, good luck. I believe in you and we’ll see you again next week.

Spring '26 Week 5

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week five announcements video for CC410 in spring 2026. So this week you should be wrapping up an example on inheritance and polymorphism. It’s one of the most important concepts in object-oriented programming and hopefully it’s something you’ve seen a little bit before. This week there’s also a start, stop, continue survey on the module. It’s just a chance for you to give me any feedback about things you want me to start doing in this class, anything you want me to stop doing in this class, or things that you like that I’m doing that you want me to continue to do. And then you have some time this week to be thinking about your final project because we’ll start meeting again for that here in a couple weeks to start talking about project ideas as we get toward the midpoint of the semester.

This week you’re going to do another example. This one introduces debugging and logging and lambda expressions, which are all really useful concepts for us to study a little bit in this class. Lambda expressions we will use a lot when we do more unit testing in a couple of weeks, but this adds some other neat features to programming languages you may or may not have seen before. This week you’re going to work on the third restaurant milestone, which is doing some inheritance and polymorphism in your code. And then you’ll also be scheduling your second final project meeting to meet with me sometime next week so that we can follow up with your final project ideas.

So for milestone three, all general requirements are enforced on this milestone. That means all of your code needs to have documentation. All of your code needs to have type checking. All of your code needs to be unit tested. All of your code needs to pass a style check. If you don’t pass the style check or have documentation or things like that, you could lose points. So make sure that you’re following all of those requirements, all the stuff that we did way back in the Hello Real World milestone. Make sure you have tox installed and working. Make sure you have the requirements file correct. Make sure you have your .gitignore file correct. All of those things, that’s what I’m going to be looking for in this milestone. The other big thing you’re going to be doing is adding inheritance to your code. So you’re going to be adding some base level classes for the entrees, sides, and drinks, and then kind of refactoring your code to use those. We’re also going to add some interfaces around that as well. You’re going to write some new unit tests to confirm that set of inheritance, especially in Python, it’s really important to have that. You’re going to update your UML diagram. Overall, this is only about 1,500 lines of changed code to add the inheritance and the unit tests. So it’s a little bit smaller of a milestone, but it gives you more time if you need to figure out the type checking or the format checking, the style checking, anything like that to get this milestone up and running. And as always, feedback is welcome if anything’s confusing on this milestone.

So like all the milestones, some big hints, first big thing on this milestone is to work in very small chunks. Try and do one feature at a time. Make sure you get that feature working before you start working on something else. That way you can easily test your code at any point. Commit early and commit often to GitHub. That’s going to be really important to you. The item interface, I want you to inherit that on the base level classes. So your base entree will inherit the item interface, but then your subclasses will just inherit that base entree class. They don’t need to explicitly inherit item because that will come down the chain. And then if there’s any syntax that’s confusing to you, please ask me questions and let me know. For a lot of you, this is probably one of the first times you’ve done some of this in Python. So if there’s anything confusing about this syntax, just let me know.

So a quick reminder on my schedule, I’m at a conference starting tomorrow through the end of this week. So I’ll be in St. Louis attending a conference. I’ll be busy during a lot of the days. Usually conferences, unfortunately, this conference is like four, eight hour days back to back. So because of that, I will have slower email responses and slower grading times. So when you submit stuff for this week, the example that’s due to, I believe it’s due today, that might take me a few days to get graded, but there’s not a milestone due this week, so you don’t have to worry about that. So just be aware, I’m out of town starting tomorrow and will be a little bit slower to get a hold of the rest of this week.

So looking ahead after this module, next week, we’re going to start working on design patterns, which again, I think is one of the most important things we teach in this class is design patterns and test doubles. Then we’ll switch over and start doing some user interface stuff right before spring break. And then we’ll have a little bit more time to spend on event-driven programming, web APIs, et cetera, from here on out.

So hopefully you’re enjoying the weather. It’s a false spring. So, you know, Lucy’s here mad in the snow, but hopefully everybody else is enjoying the nice spring weather that we have now. We’ll probably have one more round of snow before the end of spring, before spring really hits. But as always, hopefully things are going well. If you have any questions, let me know. Otherwise, I will see you next week.