Previous Semesters

Previous Semesters

Subsections of Previous Semesters

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.

Spring '26 Week 6

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week six announcements video for CC 410 in spring 2026. So, this week you should be wrapping up a larger module that deals with debugging, logging, and lambda expressions, as well as adding some object-oriented polymorphism and inheritance to your project. So, you will have done two examples over the last couple of weeks, and then it culminates in a larger restaurant milestone that is due tonight. So, hopefully, that’s getting done. If you have any questions on that, feel free to post online and let me know, and I’d be happy to help you out. Also, don’t forget, you should be scheduling your second final project check-in with me sometime during the next week or so. When we meet this time, we’re going to talk specifically about project ideas that you might have and start talking about how you might implement that based on what we’ve already done so far in the restaurant milestones.

o, this week, we’re going to launch into design patterns. Design patterns, I think, is one of the most important things that we cover in this class because it gives you some tools and things that you can use to solve common problems in your code in a way that other programmers will understand. So you’ll do a restaurant milestone with that. And then also, we’re going to have the first concept quiz, which I will talk about here in just a moment.

So for the fourth milestone, we’re going to add some more structure to our code by adding an order class and a combo class. The order class represents an order that you would make at the restaurant itself. And then a combo is a special class for combining an entree, a side, and a drink into a single item that you can add to your order. We’re also going to build a combo builder class that follows one of the design patterns to build these combos for us. And we’re also going to create another class called an order number singleton class that allows us to actually create order numbers on the fly as we create these new orders. All of these, we’re just going to build the structure of this in this project. We’ll do unit tests for it in the next milestone that is next week.

The other thing you’re going to work on is the concept quiz. The concept quiz, it’s not an exam. It’s really just a check of all of the concepts we’ve been covering in this class to see how well you understand it, how well you can apply it in a new way. The concept quizzes are a quiz online in Canvas with a two-hour time limit. They cover some theory, some code comprehension, some UML comprehension. You’ll do a little bit of code writing, but you don’t have to actually write the code so that it completely compiles. I just want you to show that in theory, you can write code that looks correct and does the right things. These concept quizzes are open book, open notes, open code. Anything you’ve produced for this class, you can use. However, please do not use AI on this concept quiz. This is really a check of your understanding, not how well AI can answer these questions. I really want to make sure that you are understanding these concepts. That’s the whole point of this class is that you’re here to learn this stuff, not here to learn that AI knows this stuff. So I really want you to show me what you can do with this concept quiz. Generally, it’s not too difficult, but it does ask you to think a little bit about some of the things we’ve been doing so far in this class.

So looking ahead after this, next module will talk about test doubles, which is the key for unit testing a lot of this more complex code. Then after that, we’ll switch in and start doing some graphical user interfaces right around spring break. And then we’ll switch toward the end of the semester. We’ll spend more time on event-driven programming and web APIs. So hopefully things are scrumming along good at this point in the semester. We’re on week six out of 16 or 17, depending on whether you include spring break in that or not. Hopefully things are going well. As always, if you have any questions, let me know. Otherwise, best of luck on this milestone, and I will see you again next week.

Spring '26 Week 7

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week seven announcements video for CC 410 in spring 2026. So, this week you should be working on the second half of a milestone. I really have split this milestone into two, but it used to be one giant milestone. Last week, you were implementing all of the design patterns that we’re going to use, so those are really going to be important for this class. And then this week, you’re going to learn how to use test doubles like mocks to actually unit test a lot of that code without testing all of your other classes at the same time.

So this week is all focused on test doubles. You’re going to have a restaurant milestone where you’re going to implement those unit tests for those new design pattern classes we created last week. And you’re also going to work on the first concept quiz. The concept quiz is something I explained last time. Big thing is it’s just a check for understanding to see how well you are understanding the concepts in this course. It is open book, open notes, but it is not open AI. Please, please make it your own work, your own writing in this way, just so that I can see what you’re doing in this class and how things are going.

Then, of course, for Milestone 5, you’re going to implement the unit tests for those design patterns and use test doubles. The big thing I’m looking for is your use of test doubles in these unit tests. That’s one of the big things I want to see in this class. So make sure that you’re using those properly. Focus on testing only the class that you’re trying to test. So for example, if you’re testing the object, the order class, you should only be testing things in the order class and everything else should be mocked. That’s really the goal here, but it allows you to build much, much more powerful unit tests if you’re able to figure out how to do that. So looking ahead after this, next week we’re going to jump into our user interface basics. And so that milestone will be due right after spring break. Hopefully things go really well there. And then we’ll do some more stuff on graphical interfaces and web interfaces.

But really, we’re halfway there. We’re halfway to the middle point of the semester. We’re really close to spring break. So just keep up the good work for the next couple of weeks. Let me know if you have any questions, and I will see you again next week.

Spring '26 Week 8

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 8 announcements video for CC 410 in spring 2026. So, this week you should have been wrapping up the test doubles project. You should have met with me for your second final project milestone. And then also, you should have wrapped up the first concept quiz. For those of you that have completed the concept quiz, I just got done grading those and have posted those grades. If you haven’t gotten that done yet, please make sure you get that done as soon as you can so that I can get that graded. Generally, I’ve been really impressed so far, so I hope to see everybody keep up the good work with all that content.

So this week, we’re going to shift gears a little bit. We’re going to start working on a graphical user interface. So this week, we’re going to go through the basics of building a user interface in Python, and then you’re going to do the sixth restaurant milestone where you’ll actually implement a user interface in your milestone. So that one, you’re going to create the overall GUI structure. I’m going to kind of show you one example for the user interface, and I’ll give you some helpful hints, but this is one of the milestones where you can definitely get creative as far as the design and layout of your user interface. So if you want to use some tools to get a cooler-looking interface at this point, now is the time to do that. You’re more than welcome to. But just make sure you get a working user interface that you can turn in by the end of spring break so that we can build on top of that.

One thing I will remind you in your Codio configuration, make sure you update the viewer port to 3050. There’s an earlier announcement in the announcements in Canvas that kind of describes this in detail, but basically you just need to find the .codio file in your Codio project and change the port to 3050 so that it will open up correctly in Codio. If you’re not sure how to fix that, let me know and I’m happy to show you how to do that. So looking ahead after this milestone, we’ve got some time to do some event-driven programming and bring in some external libraries and build a release version of our project. And then after that, once we get into April, we’ll start working on web APIs and give you a little bit more time to work toward the final project.

So it’s week eight. We’re finally reaching the halfway mark of the semester. Hopefully things are going well as always. If you have any questions, let me know. Otherwise, enjoy your spring break next week and I will see you again in two weeks.

Spring '26 Week 9

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week nine announcements video for CC Port 10 in spring 2026. So this week we’re going to do a couple of different things. We’re going to do a quick example on parallel programming. We’re also going to do an example on event-driven programming. These are kind of related topics of how we can actually run different code in different threads. Both of these examples are pretty small and just give you an idea of some of these topics that we haven’t touched on yet. And then you’ll be working on the seventh restaurant milestone where you’ll add some interactivity to your project.

Quick reminder for this week, don’t forget as you’re working in Codio for the first time that you need to go into the viewer config and change the port to 3050. There’s an updates announcement that’s in the Canvas announcements. It’s probably way down at the bottom at this point, but it shows how to do that. Basically, you go to the tab where you select the viewer, hit configure, and then just change all the entries from 3000 to 3050 to get to the new Codio port for that.

Other thing you might run into is some testing issues when you’re trying to do unit tests for your interactivity. This is mainly because the Codio boxes we’re using have limited memory. They only have about half a gig. And so for Python, we’re going to run those tests in batches. We’ll do a couple of things to actually make that work. And then the other thing you’ll have to do is remember to run xhost + in the terminal before you run any tox commands. That just unlocks the testing framework so that you can actually work with it. I talk about both of these in the video a little bit, but make sure you do that.

So looking ahead after this module, we’re going to spend a little bit more time working on our user interface where we integrate some external libraries and actually build a release version of our project. And then that will kind of wrap up the graphical user interface part of this class. And then we’ll switch over to web APIs in a couple of weeks. And so as I promised, as I talked to most of you, you’ll have a lot of time in April and early May to work on your final project. So now is the time to start ramping up on that. Maybe if you get a couple of hours to work on it, you can do the Hello Real World project again inside of your final project framework just to get that started so you have some code that you can work around.

So we’re in the halfway, we’re past the halfway point of the semester, so we’re getting close toward the end. Hopefully things are going well. Hopefully everybody is getting a lot out of this class. As always, if you have any questions, please let me know. Otherwise, best of luck as we get started up again, and I will see you all again next week.

Spring '26 Week 10

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 10 announcements video for CC 410 in spring 2026. I’m all dressed up to head to the state FBLA conference. I’m helping judge this week, so I’ll be out of the office for a couple of days, but I figured I’d get my recording done before I leave. So this week, you’ve got an example on external libraries, and then you’re going to do a restaurant milestone where you’re going to integrate an external library into your restaurant. And then, of course, we have another one of those start, stop, continue surveys. Those are completely optional, but it’s just a chance for you to tell me anything that you want me to make sure I start doing, stop doing, or continue doing. I do read all of those and I try and do my best to put anything together into practice that comes out of that. So feel free to send me your honest comments and feedback on the class in that survey.

So for Milestone 8, we’re going to be working on the sidebar for the orders, keeping track of everything in the orders. We’re going to add buttons to our panel for the combos so that we can add combos to our orders as well. And we’re going to start working on some basic unit testing around different things in the UI. Some of this will be introducing the factory method pattern, which is a really interesting pattern to use for generating these user interface panels. So hopefully this milestone works out really well. It’s a little bit more complex, but hopefully things go well as you go through that.

So looking ahead after this, then we’ll talk about building releases and integrating a checkout library, and then we’ll switch over and start doing some web UI stuff toward the end of the class. That also is meant to give you more time to work on the final project.

So hopefully things are going well this semester. You’re getting ready to build up a restaurant interface so you can finally start taking someone’s order and keeping track of it into your UI. As always, if you have any questions, let me know. Otherwise, best of luck and I will see you again next week.

Spring '26 Week 11

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 11 announcements for CC 410 in spring 2026. So, this week we’re going to start working on a couple more examples. The first one is all around building releases and working with external libraries. So, you’re going to be working on a milestone called the checkout milestone, which is a really important one. This milestone, you get a couple weeks to work on. So, make sure you kind of focus on that and start building that example. It’s really important. But the big thing about this milestone is adding the checkout process. You’re going to bring in an external library for the cash register. You’re going to be able to check out using either cash or credit card. You’re going to learn how to make change out of the cash register as well. And you’re going to print a receipt and save that in a text file. The external register library really simulates some of the functionality that a cash register object might have, but it’s also meant to be a little bit obfuscated and a little bit confusing. However, it is open source. So remember, wherever you download it, you can also find the source code for it, and you can read my source code and see how I approached building that library.

So, some quick hints for Milestone 9. First off, making change is hard. The default algorithm for making change still works, but the trick is with an actual real cash register, you don’t always have all of the coins available. And so the cash register will tell you how many coins it has available before you open it. And so if you need to give back three quarters and it only has two, then you have to trade something around. However, it does have a neat little functionality where you can take a dollar and turn it into four quarters as long as you don’t change the total amount of money in the cash register. We just assume that you can infinitely morph things around. So there’s some ways that you can adapt to build around that. So just be aware. For the receipts, each line has a limited length. So make sure you’re reading the documentation for the receipts and you’re doing some math on your end to make sure you don’t print lines that are too long in the receipts. For both of these, I really recommend using the adapter pattern. Probably you’ll either take my cash register and wrap it. You can extend the classes, or you can just wrap it and adapt it that way. That way you can test your adapter. You don’t have to test my code. My code already has unit tests. It is fully tested, but you should test your adapter to make sure that it’s doing the right math and printing out the right things. And then you can just assume that when you call the method for the register itself, it works just fine. You can either mock those or you can just have two separate methods and test the one that does your math. And then don’t worry about testing the one that calls the library function. So hopefully that gives you some hints for completing this milestone.

Looking ahead, after this milestone, we’re going to switch over to doing some stuff with a web interface. These milestones are going to be a lot smaller and more straightforward, and that’s meant to give you more time to work on your final project for this last month or so of the class. So hopefully things are going well. If everything goes well with this, you’ll be able to swipe a credit card and you’ll get a match and then it will actually let you purchase things from your restaurant. This is really where we wrap up the big functionality part of building a user interface, building a full restaurant point of sale system.

So hopefully you enjoy this project. As always, if you have any questions, let me know. Otherwise, good luck. And I will see you again next week. It will probably be Tuesday or Wednesday when I can get an announcement video out next week because I’m at an event in Salina next Monday that’s an all-day event. So unless I get a chance over the weekend to record something, my announcement next week might be a couple of days late. But just sit tight and I will get back to you as soon as I can.

Spring '26 Week 12

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 12 announcements video for CC 410 in spring 2026. So this week we’re shifting gears a little bit to move from graphical user interfaces to websites. And so this week we’re going to introduce the basics of adding a website framework to your application. We’re going to build a basic data-driven website with some templates. And starting this week, we’re going to have smaller restaurant milestones to give you more time to start working on your final project. Don’t forget we’re on week 12 of 16, so you got about four weeks to work on your final project. So now is the time to really sit down and start working on that code. If you don’t know where to start, start with the Hello Real World project to get your framework built up and then basically go through the same process we did with the restaurants. Get your data classes figured out, get your inheritance figured out, work on unit tests, and then move ahead from there.

So like I said, for Milestone 10, we’re going to be installing a web framework in our project. We’re going to use the Flask web framework, and we’re also going to use an extension to Flask called Flask Classful that I think makes it a little bit easier to work with, especially if you have experience with web frameworks like Node or Express or .NET Core, things like that. This fits really well with that. So we’re going to do some routers, controllers, templates, and really build a data-driven menu of this website. We’re not going to do the point-of-sale system in the website. We’re mainly just going to be focused on editing and customizing our menu items with this, but it’s a good example for some basic website interface. So after this, we’ll have some more milestones on the website for doing form data, filtering, serialization.

Like I said, this is really meant to be smaller milestones for the restaurant project to give you more time for the final project. And make sure you start looking ahead at the modules. There is one last restaurant milestone that is due on vinyls week along with your final project. So everything kind of comes due at that same time at the end of the semester.

So we are headed to the World Wide Web. I hope everything’s going really well for you so far this semester. Don’t forget here in a couple weeks, we’ll have our last final project check-in before the end of the semester. So if you’ve got any questions or concerns, now’s the time to reach out for that. And here in a bit, I’ll be posting some more information about how to finalize your final project in this class. But best of luck. It’s Monday on a Wednesday for me because I was out of town at a recruiting event on Monday. So I’m a little bit late getting this out. But hopefully things are going well. And I will see you again next week.

Spring '26 Week 13

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 13 announcements video for CC 410 in spring 2026. So, this week you’re going to be continuing to add more features to the website version of your project. This week, we’re going to deal with RESTful APIs and forms. You’ll do a quick example of accepting some data from a form in your website, and then you’ll add that to your restaurant milestone as well. Don’t forget that this point is where you should really start working on the final project. These restaurant milestones are a lot smaller to give you more time to work on the final project. So make sure you do that. In next week’s announcement, I’ll spend a lot of time talking about the actual deliverables for the final project, but you can find that webpage and everything on the textbook right now. Just check the module for the final project, but I’ll spend some time in the announcements next week talking about that.

So like I talked about this week, we’re going to add web forms. In this case, the web form we’re going to do is with search and results. And so we’ll be able to search our menu and present some results from that web search. It’s a really neat little feature, and it’s a great way to learn some basic web forms in our project. And then, of course, like I said, upcoming, we’ll talk about RESTful APIs and RESTful controllers so we can actually edit things in our website. And hopefully you’re spending a lot more time working on the final project as well. So the end of the semester is in sight. We’re on week 13 out of 16. So we have less than a month to go to get everything done. As always, if you have any questions, let me know. Otherwise, best of luck, and I will see you again next week.

Spring '26 Week 14

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 14 announcements video for CC410 in spring 2026. So this week we should be wrapping some stuff up. You’ve got the final project to work on. You’ve also got the second concept quiz to work on this week. And then you’ll be working on some examples of doing a RESTful API within the restaurant project on your website. And then of course, like I said, just keep working on the final project as we get toward the end of the semester. So for Milestone 12, you’ll be building a RESTful web app. This is a real nice technique for organizing the routes for your web app so you can create, replace, update, and delete all of the different entries in the web app. So we’re going to reinforce some design patterns with this one. And this will be the last time we ask you to update your UML diagram for the web app. If you just want to include the UML diagram for the web app and then the classes that are relevant in the data structure, that’s fine. You don’t have to include the GUI part. But take a little bit of time to work on this milestone to get some more features added to the web app for your restaurant project.

Then after that, we’ll be on dead week. So you’ve got another milestone for the restaurant that is all about validation and serialization, and you’ll keep working on the final project. And then the rest of the semester on finals week, there’s going to be one last textbook section that is due on finals week. And then at the end of finals week on May 15th, you’ll need to be planning to give your final project presentation. If you get stuff done early at this point and you want me to grade stuff early, just shoot me an email and let me know. There’s a policy in the syllabus for that. So if you get done with your milestones or anything and you want me to grade it before the due date, I’m happy to do that. But we’ll talk about the final project here in just a second.

So for the final project, the page is available on the modules in Canvas. So make sure you take a look at that. Just like with every other project, you’re going to make a release tag on GitHub containing your code. Your code should have some documentation to it. It may also have a README and some user documentation. And then you’re going to provide a presentation for your project. The presentation itself should be about 15 to 20 minutes long. Most students choose to pre-record their presentation using a tool like Zoom, where you just share your screen, record it in Zoom, and then send me that presentation. If you do want to present live, you can do that for me. Unfortunately, I’m only available on Monday of Finals Week. So if you want to do that, let’s make sure that you get that scheduled on Monday. If you send me a video, I may send you some Q & A questions via email. So make sure you’re kind of watching and can respond to that. And if you wait, of course, till the last minute to turn in your presentation, I may or may not be able to send back and forth some Q & A. So just be prepared for that. But unfortunately, due to all my other obligations, teaching the senior project course and doing a, we’ve got a faculty retreat going on during finals week. I’m only available for live presentations on Monday of Finals Week. So just keep that in mind.

For your presentation, you could really present in any order, but if you need an outline, here’s kind of what I suggest. Introduce your project, give some background about why you chose this project, why you’re interested in this. Talk about your implementation, how you built it, what you did differently than the restaurant project. Evaluate how well your project meets the needs of what you wanted to do. So how well do you think it actually came together? Evaluation should also include some discussion about your testing, both unit testing and just manually testing the interface itself. Then you can talk a little bit about future work. If you’re going to continue working on this project, what would you do? And then, of course, be prepared to give a live demo of your working project in your video.

So that’s really all I got. We’re close to the end of the semester. There’s just a couple of weeks left. As always, if things are going well, hopefully things go well for you. But otherwise, let me know if you have any questions. Otherwise, I will see you again next week.

Spring '26 Week 15

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 15 announcements video for CC 410 in spring 2026. So this week you should be wrapping up the last couple of modules in this course. We have a module on validation and serialization in the restaurant project. And then really the big thing you should be working on is your final project, which is going to be due at the end of next week. So really for the rest of the semester, after you get those things turned in, there is one textbook extras quiz that’s at the end of the semester. And then everything else is due by the end of finals week, which is Friday on May the 15th.

So for your release project, for the final project, you need to create a release tag on GitHub, just like you do with every other project. Make sure you read the final requirements page and try and cover most of those requirements in your project. Your project should have good documentation in the code, and I highly recommend including some sort of README or user documentation for how to run it as well. And then the other big thing you’ll turn in is your presentation. So the presentation itself should be 15 to 20 minutes long. I expect most students will want to pre-record a video and then just submit that video online. If you do want to present it live, you sure can. Unfortunately, because of my schedule doing all the computer science final project, the only time I’m really available is Monday of Finals Week. I’ve got lots of openings that day. The rest of finals week, I’m fully booked during the day. However, you can shoot me an email. I may be able to find a time either in the early morning or in the evenings after five o’clock to do some presentations later that week, but I really wouldn’t count on it. So for most of you, if you’re not ready to present by Monday, you should plan on pre-recording a video and submitting that video by the end of finals week.

So here’s a suggested outline for your presentation. Give a quick introduction of your project. Talk about the background, why you chose that project, why you’re interested in it. Talk me through your implementation, how you designed it, what code you used, how you built either something different or how you used code for the restaurant project in your own project. Evaluate how well you did. Tell me how well your project met your goals and how well you think you did based on how you thought it would come out at the beginning of the project. Talk about some future work if you were to keep working on the project. And then give me a demo of the project working. Make sure you run it, share your screen, show me that your project actually works.

Last big thing we need to cover in this class is TEVALs or teaching evaluations. Those will be available next week. You’ll get an email probably late this week, early next week with a link to fill out the TEVAL online. Remember, the TEVALs or K-State are completely anonymous and they’re delayed. I don’t get to see any of your responses until after I submit final grades. I encourage you to take the time to fill out these TEVALs. All feedback is welcome and encouraged. This class has constantly changed over the years as I get feedback from students about what works, what doesn’t work. So I take all of your feedback into consideration, both good and bad. So please take the time, fill out the TEVAL with your honest opinions and let me know how I can make this course better and how you think things went. That’s always very valuable to me. So I welcome your feedback.

So we’re at the checkered flag. We’re almost at the end of the semester. Hopefully things are going well. This will be the last announcements video you’ll see from me this semester. So unless you schedule a time to chat with me about your final project, it’s probably the last time you’ll see me on video. So best of luck as you wrap up the semester. I’ve been really impressed with everybody’s hard work throughout the semester and I think it’s going great. So I look forward to seeing all your final projects and hopefully I’ll see some of you again in a future class. Best of luck.

Spring 2025

Subsections of Spring 2025

Spring '25 Week 1

YouTube Video

Resources

Edited Transcript

Hello, and welcome to CC 410 Advanced Programming, the first week of the course in spring 2025. My name is Russell Feldhausen. I’ll be your instructor for this semester. My contact information is here on the screen. I work mostly remotely from the Kansas City area, so I’m not on campus very often. Generally, you can find me on campus on Mondays throughout the semester, although for the first couple of weeks of class, I’ll actually be on campus on Wednesdays. You can always email me at russfeld at ksu.edu, or you can find all my contact information on my website, which is russfeld.me.

So in this course, the big picture is we’re going to teach you advanced object-oriented programming. At this point, you should have taken several courses in Java or Python programming. You would have learned about data structures and all of the basic ideas around programming. This is the class where we take it to the next level. So in this class, you’re going to learn a lot about the object-oriented programming paradigm. We’re going to learn about unit testing and design patterns. We’re going to learn how to build a graphical user interface using a traditional method. We’re also going to build a web interface and do a little data serialization to store data on our computer. And we’re going to do this using three different methods. We’re going to do some example projects where you’ll follow along with my example to complete a project. We’re going to do a restaurant project, which is a long-form set of milestones that we’ll do throughout the semester. And in you yourself, we’re going to work on a final project that mimics the restaurant project, but it’s a self-directed topic so that you can apply that in your own area of interest.

So in this class, we’re going to introduce a lot of new technologies. First and foremost, we’re going to learn how to use Git and GitHub Classroom to store and maintain our code. Git is a very professional tool that almost every developer uses to track their code, so we’re going to get used to using that. We’re going to use automation tools such as Gradle for Java or Tox in Python to automate a lot of our build process. We’re going to introduce type checking and unit testing and style checking and documentation. All of these things that professional developers need to know how to do in their code, we’re going to work on doing that here in this class.

So as I mentioned in this class, there is a final project. You get to choose the topic. We want the topic to align with your interest and give you a chance to use the new skills you’re learning in this class. You and I will work together to discuss the scope and scale of your project and make sure your topics are on track. The final project itself is about four milestones that you’ll work on. And at the end of the class, you’ll actually do a presentation. We no longer present to the whole class, but you’ll present at least to me. The final project itself is about a quarter of the size of the restaurant project that you’re going to work on. And so as you get a few milestones in the restaurant project, you’ll get to see exactly what we mean about the scale for the final project.

So this first week is mostly just administrative stuff, getting you oriented to the course and what’s going on. We also do a project that I like to call Hello Real World. If you remember back when you first started learning programming, a lot of students, your first project is the Hello World project where you print Hello World in your programming language. We’re going to do that again, but this time we’re going to learn how to do it as a professional would do it. We’re going to use proper object-oriented structure, we’re going to document our code, we’re going to add unit testing, we’re going to add style checking, all of those things that a professional developer would do if they were writing a hello real world for their job. You’ll also be scheduling your first final project meeting to meet with me either this week or next week to talk about your final project. We’ll also discuss some things such as office hours, communication platforms, and you have an assignment out there to introduce yourself on the ed discussion platform, which is what we will primarily use for this class.

Then we get into next week where we start learning how to do object-oriented programming by building a class library for our project. We’ll work on the first restaurant milestone, and that project is pretty large. It is about 2,000 to 2,500 lines of code, which may already be several times bigger than the largest project you’ve ever worked on. However, most of this is boilerplate code, so once you get one part of the class library working, a lot of it you can copy, paste, and adapt existing code. The thing I tell you is to be thoughtful about your code and your structures. Don’t try and write all 2,500 lines of code raw. Try and build parts of it and learn how you can copy, paste, and pick and reuse things in your code, so that you start to see those common structures throughout your code.

Then we’ll go on to week three where we introduce unit testing and documentation. We’ll write some unit tests to confirm that our code library works correctly. This balloons the size of your project to about 4,000 lines of code, and at least in my model solution from several semesters ago, I ended up writing 423 unit tests. Again, many of them are repeats that you can copy, paste with minor changes, but still, it’s an awful lot of code, so just be aware of that. But this gives you a really good chance to catch errors in your previous work before you move on.

And then we get to weeks four and five where we start introducing more concepts around inheritance and polymorphism and restructuring our existing code to better take advantage of the object-oriented programming structure. And then by then, we’ll already talk about final project milestone two, but that’s already toward the end of February when we get there. beyond that we’ll introduce things such as graphical user interfaces, external libraries, web interfaces, etc. We’ll talk a lot more about those as we get to that point in the course.

So one thing we’re doing this semester that I think is really fun is I’m actually giving you a choice of the restaurant project that you want to do. I have two restaurant projects that I have used in previous semesters that I have cleaned up for this semester. One of them is called Game Grub where the menu is all built around things such as board games and then another one called Star Fleet Subs which is set in the Star Trek universe. And so a lot of the menu items are kind of punny jokes based on either Star Trek characters or board games that you may have played. The choice of the restaurant doesn’t really matter. It just tells you what menu items you’re trying to work with but you can choose either one. So if you’re interested in either one go for it. The Game Grub one is the one that is currently linked in Canvas. It’s the one that you’ll see if you go through the course. if you want to find Starfleet subs it is linked online in the textbook I give a link to it in the first intro announcement before this one so you can find it there or you can just talk with me and I will send you that information.

So some advice for this course this is a four credit hour college course which means I’m expecting you to have about 12 hours each week devoted to this course so if you’re working full-time this is about a day and a half of a full-time 40 hour week if you’re working solidly throughout that entire time so be aware that this is a four credit hour course the last four credit hour course you may have taken in this program would have been CC 210 so that gives you an idea I would recommend taking some time to schedule your time very wisely this semester make sure that you’re devoting enough time to this class and of course as soon as I give you a milestone start working on it and leave time to ask for questions most of the milestones are due on Mondays and the biggest mistake I see students make is they don’t start working on the milestone at all until Friday or Saturday and then they don’t have time over the weekend and then they get stuck and then it takes Monday or Tuesday to get answers to their questions and all of a sudden there’s two or three days behind so if there’s a milestone to start working on it Tuesday or Wednesday of that week so you’ve got time to get your questions answered and then you kind of know where you’re going so you have the time to work Saturday Sunday to get it done and get it turned in you can always ask questions you can get feedback on your code early that’s one of the nice things about using Codio and github is I have the ability to look at your code in progress so you can send me an email and say hey I’m working on this I’m not sure I’m getting it right can you look at my code and help me out I can totally do that.

Copy paste your code carefully - I do encourage you to copy paste code in this class unlike previous courses but I’m talking about copy pasting within your own Codio instance be careful as you do so it’s really easy to get your variable name screwed up what I don’t want you doing in this course is using tools such as chat GPT to generate your code that really defeats a lot of the purpose of the learning that we’re trying to do in this course and so I really want you to build the code yourself but you can copy paste within your own Codio to reuse things that you’ve already built. Just don’t use things like chat GPT or GitHub CoPilot. They really, really are going to shortcut your learning in this course, and I guarantee you’re going to have a hard time as you get further on and try and debug the code that those tools create. That said, you are welcome to use and cite other online resources. So for example, in this course, if you can’t remember how to sort a list, you can go look that up. I don’t expect you to remember that, but if you do borrow code from any other website, add a comment to cite where it came from, and try and not use it as your entire project. But if you need a little piece of code and find it online, just cite it, that’s totally fine.

Other than that, this is really the first time we’ll talk this semester. There’s a lot of different ways you can keep in touch with me. First and foremost, I really want you to use the Ed discussion boards. That’s a great way to chat between you and I and also your fellow classmates. So please feel free to post there. That’s my preference by far. I’m also on Microsoft Teams. So if you find me on Microsoft Teams for the K-State Microsoft Teams, I’m on there. You can usually chat with me there. I also host Tea Time office hours, which are going to be, I believe, Monday afternoons this semester. So you’ll see, for those of you in the computer science department, you’ll see some notes from David, one of the advisors about this. If you’re not in the CS department and you want to learn more about Tea Time, let me know and I’ll email you about that. And then finally, you can always schedule one-on-one office hours with me. I don’t hold official office hour blocks anymore because I work online. Instead, I have a Calendly that you can click on to schedule one-on-one times with me. And for the most part, that works. If I feel like I’m getting a lot of demand on Calendly, I may step aside from that and start doing scheduled block office hours. But generally, most students just need a five or 10-minute question so you can grab a time on my Calendly and we can meet during the day and get that taken care of.

So that’s all I’ve got for this first week’s announcement. Throughout the semester, I will try and post one of these a week, roughly once a week. So if you have any questions, let me know. I will talk every week about what’s going on that week and give you tips and tricks to help you out. But best of luck this semester, I’m rooting for you. This is gonna be a very tough class, but I know you can get through it. I know a lot of students before you have. So don’t be afraid to ask questions if you get stuck. And best of luck and I will see you again next week.

Spring '25 Week 2

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week two announcements for CC410 in spring 2025. So this week you should be wrapping up the first module, which is the Hello Real World project. It introduces some of the coding style and some of the things we’re going to use in this class. Thankfully, that project is mostly just a follow along with me on the videos project, so you should be getting that wrapped up today. And then also, if you haven’t already, you should schedule your first final project milestone. It’s just a quick check-in meeting with me to get to know each other and talk about the final project in this class.

Then this week, you’re going to shift over and start working on the basics of object oriented programming. These are things that you maybe have seen before, but we’re going to go a little bit deeper into the theory and reasoning behind why we do the things we do in object oriented programming. We’ll do a quick object oriented programming example, and then you’ll start working on the first milestone for your restaurant. And remember that you can choose the restaurant project that you want to work on. There is an announcement that details the different restaurant projects that you can choose from. So, other than that, if there’s any updates, you can check the Ed discussion board for any discussions there for grading. We’ll kind of practice this on the first Hello Real World project. You’ll see your actual grade is filled in in the rubric on Canvas, but you’ll get comments on GitHub via the feedback pro request. I’m pretty sure those will send an email to your GitHub’s email account, so watch for that. But you can always go back and check for those as well.

Otherwise, I think so far so good. Everything seems to be going well in this class, so I’m pretty happy. The first milestone, like I talked about, is a lot of doing object oriented programming, so it’s a lot of boilerplate code to create the data classes that we’re going to use for this class. To make things easier, I encourage you to follow the style and documentation guides we talked about in the first project, but those are not required until later milestones. So you can take it a little easier on yourself and not have to worry about getting everything right at first, but you can work on that and make sure that it’s there. In my estimation, this first milestone takes anywhere from three to eight hours to complete, and a final solution will be anywhere from 1,500 to 2,500 lines of code, depending on how you write it. As always, feedback is welcome on my milestone descriptions. I try and make them as clear and as detailed as possible. If something is unclear, let me know and I’ll work on it.

So other than that, after there, we’re gonna spend the next few weeks working on just object-oriented programming details. So we’ll spend some time on documentation and unit testing. We’ll introduce inheritance and polymorphism again. We’ll spend some time working on debugging, logging, and lambda expressions. And then we’ll get into things like design patterns, which I think are one of the most important takeaways from this class, probably other than unit testing is design patterns. So hopefully everything’s going well. As always, if you have any questions, let me know. Expect most weeks to see an announcement video like this posted on Tuesday, but because of the week I’m on campus on Wednesday instead of Monday this week, so you get an announcement on Monday. But in the future, these announcements will probably be posted sometime around Tuesday morning, so you can watch for that. So anyway, best of luck this week and I will see you all again next week.

Spring '25 Week 3

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week three announcements video for CC410 in spring 2025. So you should have already wrapped up the second module which is on object oriented programming. We do a small example on object oriented programming where you make a few data classes and then you worked on the first big restaurant milestone where you made object oriented programming classes for each of the menu items in that restaurant itself. So this week we’re going to move ahead by talking about some things around documentation, unit testing and UML to actually diagram your program. We’ll do a documentation and testing example. And then for your second restaurant milestone, you’re going to write unit tests to actually review the code that you wrote in the previous milestone and make sure it’s correct.

So for the second milestone, you’re going to be writing unit tests. The number of unit tests that you write may vary. My model solution has around 400 unit tests, but it may be a little bit overkill. So in the range of three to 400, I think is what’s appropriate. You’ll have documentation comments that you’ll add to all your code. You’ll add a UML class diagram for your project. In total, this project should take between three and eight hours as long as you work pretty diligently about duplicating unit tests carefully between the different classes. You’ll find that most classes have very similar unit tests. So this one may be between 3500 and 4000 total lines of code, but a lot of that again is repeated and copied. And as always, feedback is very welcome.

So some big hints for the second milestone. Do not look at the source code for your solution to milestone one. For example, the mistake that a lot of people make when writing unit tests is they pull up the code for the class they’re going to test and then right next to it, they write a unit test to test that code. That leads to tests that are bad. What we want to do is we want to write tests that confirm that the code works correctly, not that the code works like it is written. So for example, if you’re checking the price of an item, you should go back to the original menu from the milestone one description and look at the menu price for that object and code that into a unit test. You shouldn’t look at the source code to figure out what that price is because if the price is wrong in the source code, your unit test will then test for the wrong price. A lot of students have made this mistake. One thing you can do is you can use global attributes at the top of your test for things like the price and the number of ingredients and the toppings and things like that. You could just have some global attributes at the top and then write the unit test so that they just read those attributes. In that way, you can just copy paste all the unit tests between the classes and change those global level attributes to represent the different classes. There’s a lot of different ways you can do it. You should also look at parameterized tests across enums to check all the different values. For example, if you’re not sure how to do that, here is some examples of generalized tests using global variables in both Java and Python. For example, this Java one, I have a price and a calories at the top. And then when I check for the correct price, the correct calories, I just reference that global variable. So instead of having to change those values down in my code, I can just change them at the top of the class and then copy paste all these unit tests in between the multiple classes to check the price and check the calories.

Beyond that, I really want to encourage you to think about this class in terms of a growth mindset. The milestones in this class are challenging. They’re meant to be challenging. The only way that you’re going to grow and get better as a programmer is by being challenged a little bit. And so when the milestones don’t feel like they’re easy, that’s because they aren’t. We want you to learn. So I want you to take some time, make sure you’re reading very carefully. If something doesn’t make sense, ask for clarification. And then, of course, start early, work methodically, and commit your work often to Git. For example, the milestone that’s do this next week, you should be starting on it right now and starting to work through that code a little bit at a time, instead of saying, oh, I’ll just do everything on Sunday. When you try and work eight hours in a block, that’s really, really hard to do. So if you do a little bit at a time, that helps you figure out if you run in any errors, if you need any assistance, things like that.

So looking ahead after this week, we’ve got milestone four. Next week is going to talk about inheritance and polymorphism. Then we’ll spend a module on debugging and logging. Then you’ll have your second final project check in toward the end of February. Then we’ll switch over to do design patterns and test doubles, which I think are the two really cool things we cover in this class. And then after that, we’ll talk about graphical user interfaces, web interfaces, et cetera. So hopefully things are going well. You’re going to write an awful lot of tests this week, but it’s really, really good practice to get used to writing unit tests for your code. It’s something that you do a lot if you write professional software. As always, if you have any questions at all, feel free to let me know. Otherwise best of luck, and I will see you again next week.

Spring '25 Week 4

A Repeat

Good morning! Unfortunately I’m not feeling very photogenic this morning so I won’t record a new announcements video. Instead, here is a repeat from last semester that has all the pertinent information about the upcoming milestone. Best of luck!

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week four announcements video for CC 410 in fall 2024. So this week you should be wrapping up the second restaurant project milestone, which involves adding documentation, unit testing, and a UML diagram to your project. You should have done a short example of adding documentation and unit testing to an existing project, and then you’ll expand that into the restaurant project. And hopefully you’re getting that all done. I noticed that so far I’ve only got one of those submitted, so hopefully you’re getting that wrapped up and submitted pretty soon later today. So this week we’re going to shift gears a little bit, and we’ll spend some time talking about inheritance and polymorphism, which are two of the really big reasons that we use object oriented programming in this class. We’re going to do a small example of looking at inheritance, and then you’ll have some time to think about your project, but there won’t actually be a restaurant milestone due this week. There is one due next week that includes debugging and logging as well. And so instead this week you’ll have a little bit of time to think about your final project. There’s a start stop continue survey out there, which basically asks you if there’s anything I should start doing in this class, stop doing in this class, or anything I should continue doing if you like things that I do. So it’s a chance for you to give some feedback. But really the big thing for this module is get through this module pretty quick so you can go ahead to the next module and start looking at that content and start working on the milestone, because there is a reason that I give you two weeks to work on this milestone. So you want to get to that as soon as you can.

So next week we’re going to introduce some things around debugging and logging. We’ll also briefly talk about lambda expressions, which are one of the important things that you’ll need for this. We’ll do a small example about adding debugging and logging to an existing project, one that you might recognize. And then you’re going to have the third restaurant milestone where you’re going to implement some inheritance and polymorphism in the existing code. It’s one of the few times where we actually refactor existing code to work in that way. And then there’ll also be the second final project milestone, which is due by the end of the week. So we’ll be there pretty quickly to the end of September by the end of next week.

So for milestone three, this is the first milestone where we’re enforcing all general requirements in the course involving documentation unit testing. typing all of those things that you did in the Hello Real World project. Those need to be implemented in Milestone 3. For those of you in Python, make sure you’re using a TOX file that has all of the correct commands in it. For those of you in Gradle, make sure you’re using a build.gradle file with all the appropriate add -ins added to it like we did in the Hello Real World. You’re going to add some inheritance to this. We’re going to create a parent class over our entrees, our sides, our drinks. We’re going to add some other additional interfaces and things like that. So you get to add inheritance to your classes and refactor a lot of code. And then, of course, you’ll need to create some new unit tests to check your inheritance and make sure that it’s working and update your UML diagram to match that as well. Overall, this milestone is smaller than the other two. It’s only about 1 ,500 lines of code changed or updated, but it is much more complex because you’re refactoring and adjusting existing code. So be kind of careful as you work on this milestone.

So some big hints for Milestone 3. First and foremost, I encourage you to work in small chunks. Don’t try and do the entire milestone in one shot. So don’t try and do the entire milestone in one shot. and then at the end, try and compile and run it. Work in small chunks, make sure your stuff is working as you make changes, and if you break something, try and get back to a working state before you stop. The second thing is take advantage of Git. You can commit early, commit often, you should have multiple commits for this milestone. One of the things that really worries me in this class is when I see students have one commit on GitHub per milestone, that kind of scares me because it really means you’re not using GitHub the way that you can, where you make little commits every time you get something working, so you can roll back if needed if you make a mistake. This is also a good opportunity to try test -driven development. You can actually try and write your unit tests before you write your code, and then get your code to actually fulfill those unit tests. It’s a really neat idea, and it’s a fun way to actually work on your code a little bit differently. Some of the other things I really recommend is you can inherit the item or order item interface on your base class, so you don’t have to inherit that on each of the entrees, side and drinks. If you inherit it on the base class, it will then transitively get inherited on all of the other classes as well. And finally, there might be some questions about syntax for some of this. Feel free to ask questions if anything doesn’t make sense or you’re not sure exactly how to do things because of interesting syntax.

So, like I said, module four and five, we’re gonna talk about inheritance and debugging and have another final project check -in by the end of September. Then we’re gonna shift over to design patterns and test doubles. Like I’ve said earlier, module six and module seven, I think are the most important new content that you’re going to learn in this class, probably outside of unit tests themselves. So we’ll spend quite a lot of time working on design patterns and test doubles before we shift over to working on user interfaces and things like that. So, hopefully everything’s going well. Hopefully you don’t feel like the whole world’s on fire with these milestones, but I do recognize that they are very large. They’re meant to kind of stress your ability as a computer programmer a little bit and give you opportunity for growth to really see how far you’ve come as a programmer. So make sure you go into these with the right mindset of knowing that it’s a challenge out there to help you grow as a programmer. It’s not meant to be obstacles or busy work to make this more difficult. It’s really meant to challenge you and help you grow as a programmer. As always, if you have any questions, let me know. Otherwise, I will see you again next week.

Spring '25 Week 5

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week five announcements video for CC 410 in spring 2025. My apologies for not being here last week. I was under the weather, but hopefully last year’s video worked out really well. So this week you’re going to be wrapping up a module on inheritance and polymorphism. You did a small example exploring inheritance using a blender and a bunch of fruit. And then we also have in this class a start, stop, continue survey that’s out there. I’ve already seen a couple of responses from students. Basically I use that as a short little chance for you to give anonymous feedback to me throughout the semester of things you want me to start doing that I’m not doing, something you want me to stop doing that I’m doing that you don’t like, or something you want me to continue doing if you think it’s really important to your success. It’s just a great way for me to get some feedback and see what’s working and what’s not in the class. You also have some time this week to start thinking about your final project because there’s not a big restaurant milestone that’s due right now. So start thinking about how your final project idea might fit into some of the stuff we’ve already done with the restaurant milestones.

So this week we’ve got another new module. This module deals with debugging and logging and also introduces lambda expressions. So you’re going to do a quick example with debugging and logging and you should be continuing to work on the third restaurant milestone. That milestone you have two weeks to work on. So obviously it’s a larger milestone than before. So make sure you give yourself plenty of time to work on that third restaurant milestone. You should also be scheduling your second final project meeting. However, please be aware I’m out of the office entirely all of next week. I will also post an announcement to this effect later this week. It means I’m going to be unavailable for any scheduled meetings or anything next week. So if you need to schedule a final project, ignore the due date. Just get it on my calendar sometime between now and spring break and we’ll get that final project meeting taken care of.

So this week milestone three, all general requirements are enforced. That means your project needs to have all of those things we did in the Hello Real World project, including MyPy for type testing, using flake for style guide, using documentation. All of those things are going to work. to be enforced in this milestone, and if they’re missing, there are going to be point deductions that are taken off if you miss any of those things. So make sure you match all the requirements. You’re going to add some inheritance to your existing classes. You’re gonna refactor some stuff, add some new unit tests, and update your UML diagram. All told, this is really only about 1,500 lines of code added or changed, but you have to be very delicate and very careful to make sure that you’re changing the right parts. And as always, feedback is welcome if you have any questions or concerns about the milestone.

So some big hints for this milestone, work in small chunks. I see a lot of students that will slowly work through this entire project. They’ll kind of take everything apart, start trying to change it, and then they’ll get way in the weeds, and it’s hard to test if it’s all torn apart. So try and work on one part at a time, work in small chunks, take advantage of Git, use Git to commit early and commit often and save your code. That way, if you have something working and then you try and fix something else and it breaks, you can roll back to that earlier commit and try again. This isn’t also a good time to try a test-driven development, so you can actually try and write your unit tests before you try and pass them. That’s really an interesting thing to do. I give a hint on this one. You should always inherit the item or order item class on the base class and not the individual classes. So for example, in the entrees, the base entree class should be the one that inherits from order item. And in all of the subclasses of entree, don’t have to explicitly inherit order item because they’re inherited from the base class that inherits that. And finally, if you have any questions on syntax, please let me know, especially when we work with this inheritance stuff in Python, sometimes the syntax is a little weird. So don’t be afraid to reach out and ask questions if you have any questions on that.

Looking ahead for the rest of this next few weeks, we’ve got some time spent on design patterns and test doubles the next couple of modules. I’ve said this before, I’ll say it again. I think those are probably two of the most important modules in this class. And then after spring break, we’ll shift gears a little bit and we’ll start working on graphical user interfaces and things like that. And then leading toward web APIs toward the end of the semester. So hopefully everything’s going well. I know we’ve gotten a lot of snow this week and the week before. So hopefully it’s not too miserable out there. I know it’s really, really cold today, but try and stay warm. If you have any questions, let me know. Otherwise best of luck. I will not post a new announcement video next week because I’m on the road. I’ll probably repost a repeat from last semester again. But if you have any questions at all, feel free to let me know. Otherwise, good luck. And I will see you in a couple of weeks.

Spring '25 Week 6

A Repeat

Good morning! I am travelling this week and won’t be able to record a new announcements video. Instead, here is a repeat from last semester that has all the pertinent information about the upcoming milestone. Best of luck!

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week six announcements video for CC410 in fall 2024. So this week you should be wrapping up the modules on debugging, logging and Lambda expressions. There’s a small example that you do on debugging and logging and then the third restaurant milestone is due pretty soon. So make sure you get that done. You also should be scheduling your second final project meeting with me. So I look forward to hearing about some of your interests and things that you’re looking at for your final project. This is again, just a quick discussion to see where you’re at on project planning and maybe give you some advice of things that you could start working on in your final project as you have some time over the next few weeks.

So this week we’re going to launch into one of the most important topics in this class, which is design patterns. So you’ll do a small example this week, building some design patterns in an example project and then you’ll update your restaurant project to include some new design patterns and you’ll also work on the first concept quiz. So for the fourth milestone, we’re going to add some new design patterns building around an order class, a combo class, a combo builder class and an order number singleton class. All of those are pretty important classes for us to be able to build orders and combos out of our menu items that we can add to our cart. So you’re going to keep track of all of those. We’re just building those in this milestone. And then the unit tests for a lot of these are going to be in the next milestone. I used to do these all in one milestone, but I found it was a lot easier to split them into two milestones. So you have time to work on building the code for all the different design patterns in this class. And the next time we’ll add the unit tests as we learn about test doubles and mocking.

So the other thing that you’ll have this week is the first concept quiz. This is basically a quiz to check your understandings of some of the concepts that we’ve covered in this class, including object oriented programming theory, code comprehension, UML comprehension and the ability to do unit testing. I want you to think of these not exactly as an exam, but more of a check for understanding for a lot of the concepts that we worked on. This has a two hour time limit and it is open book, open notes, open code, but all of the- Your work should be your own. So for example, do not go to chat GPT and ask it these questions and then copy paste the answers. You can reference your book, you can reference your notes, you can reference your code from this class, but I really want this to be a representation of your own work and understanding of these topics. That’s really what I’m looking for just to see how well you actually have understood some of the bigger concepts that we’re looking at in this class. So that’s what this quiz is about.

Looking ahead after this, the next module we’ll talk about test doubles, which is really what we need to do unit testing for a lot of these design patterns. Then we’ll shift gears, we’ll start talking about graphical user interfaces and how we can do things with event -driven programming to make our GUIs more effective. So hopefully everything’s going well. Hopefully things are progressing very nicely in this class. As always, if you have any questions, let me know. Otherwise I look forward to seeing you all again next week.

Spring '25 Week 7

YouTube Video

Resources

Edited Transcript

Hello and welcome to the Week 7 Announcements video for CC410 in Spring 2025. This week you’ll be working on a module about test doubles, which I think are one of the most important parts in this class outside of the design patterns that you worked on previously. We’ll be doing a restaurant milestone that implements a lot of these test doubles in unit tests, and you’ll also be completing the first concept quiz. In the previous video I talked a little bit about the concept quiz. It’s basically meant to check to see if you’re understanding some of the deeper concepts we’ve been covering in this class. It’s open book, open notes. It is timed, so make sure you watch out for that. And I’m really looking for you to do your own work. Please don’t use tools like Chat GPT on the concept quiz. I really want to see how well you’re understanding these deeper concepts because it really shows me that you’re getting the concepts that we’re covering in this class.

So the milestone you’re going to work on is adding unit tests for the design patterns that we added to the restaurant in the previous milestone. You’ll be using test doubles, so you’ll be mocking a lot of these design patterns up. What I really tell you to do is focus on only testing one class. So whatever class you’re testing, test that content, and then use test doubles to mock up all of the other classes that interact with it. If you do this correctly, it leads to a lot of more powerful unit tests for your project, which I think is really, really important in this class. Looking ahead after this, we’re going to have this up, and then we’ll switch over to working with graphical user interfaces here right around Spring Break. We’ll spend some time talking about event-driven programming. I think everybody should have scheduled a meeting with me this week or next week to talk about your final project. And then after that, we’ll kind of work on some stuff on external libraries, releases, web APIs, et cetera, as we get toward the end of the semester. So we’re getting close to Spring Break. Hopefully things are going well. We’re nearing that halfway point in the class, so hopefully things are going as good as you can. If you have any questions or concerns, let me know. Otherwise, I will see you again next week. Best of luck.

Spring '25 Week 8

YouTube Video

Resources

Edited Transcript

Hello and welcome to the Week 8 announcements video for CC410 in Spring 2025. So this week you should be wrapping up the module on test doubles. I believe most everybody already has that submitted, so that’s great. That module builds really nicely on the previous module working with design patterns. And so those two modules kind of go together. I’ll work on getting caught up on grading those now that I’m back from my conference. You also should have scheduled and hopefully already had your second final project meeting. If not, make sure you get that scheduled soon. And then you just completed the first concept quiz. And so I’ll work on getting that graded this week as well and get caught up on all of that grading.

So this week we’re going to shift gears and we’re start going to work on graphical user interfaces or GUIs. So the first one is just a basic GUI example. All you really have to do is follow along with what I do in the milestone and then build out your own GUI yourself. And so this leads to the sixth restaurant milestone. In this one you’re going to create the overall GUI structure with a lot of the buttons and some of the fields and things. I’m going to give you one example of how it can look. And if nothing else, if you’re not very creative, I encourage you to follow my example because it will work really well. But feel free to get creative if you want to adjust the layout or the colors or the fonts or anything. There’s lots and lots of things you can do in this GUI basics module to make your project unique. So feel free to take some time and get creative if you have any time and interest in that. Then looking ahead, we’re going to spend some time doing event driven programming where we actually make our user interface interactive. We’re going to talk about how we add external libraries to our project, how we build a release version of our project. And then once we shift over into April, we’ll shift over to web APIs and spend a little bit of time working on a web interface for a similar project as well.

So we’re finally at the halfway mark of the semester. This is week eight out of 16. So hopefully things are going well. This is kind of the point where we take a little bit of a break with this GUI basics module and having a spring break in here. Then we’ll have a couple of larger modules in late March, early April. Peter’s off after that. As always, if you have any questions or concerns, let me know. Otherwise, have a safe and happy spring break. And I will see you again in a couple of weeks.

Spring '25 Week 9

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week nine announcements video for CC 410 in spring 2025. So last week you worked on adding a basic user interface to your program and this week we’re going to work on parallel programming and event driven programming so we can actually add events to your user interface so that when you click on the buttons they will actually do something. And then at the end of this we’ll complete restaurant milestone seven where we’ll add a lot of functionality to our user interface where you can actually create items and save them in the order list on the side of your user interface.

One of the things we run into in this particular lab when we start doing unit testing with user interfaces is the limited memory available in Codio. I talked through some of this in the example and in the project, but if you ever have any problems with limited memory, a couple of things that you might try. We don’t have any Java students this semester but if you run into problems with Python you can go to the project menu and hit restart box in Codio that will clear out all of the memory in Codio and then refresh your browser. For Python specifically in our tox file we’re just gonna run our tests in batches. That will help reduce the memory usage of all of our unit tests. So read that very carefully. Let me know if you have any questions doing that. If you’re working outside of Codio you shouldn’t have any of these issues and you don’t have to run the tests in batches. Just put a little note in the tox file that you do that and I’ll test it locally or batch it myself when I test it for grading.

So looking ahead after that, we’ve got module 10 and 11 where we talked about adding an external library to our project and building a release version of our project and then after that we’re gonna switch over and talk about web APIs. As I’ve talked with most of you once we hit that part of the class here in about three weeks the workload drops off quite a bit so you’ve got about the last month or so of the class to have more time to work on your final project. So we’re over the halfway point. We’re getting close toward the end of the semester already so hopefully things are going well. As always if you have any questions let me know. Otherwise best of luck and I will see you again next week.

Spring '25 Week 10

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 10 announcements for CC410 in spring 2025. So this week you should be working on an example of bringing in an external library into our project. We’re just gonna do a small example for how to do that. Then you’re gonna get started on the eighth restaurant milestone where we’re gonna add orders and combos. This is also another instance of the Start, Stop, Continue survey. So it’s a good chance for you to give me any feedback that you have on things that are either going well in the class, things you want me to start doing, stop doing, or things you wanna make sure that I continue doing in the class. This is another just good informal anonymous check-in to see how things are going.

So for milestone eight, we’re going to be working on the sidebar at the side of our UI for getting the orders correct. We’re gonna add new buttons on the panel for our combos and actually add a new panel for editing the combos themselves. We’re also gonna add some basic unit testing to our UI, nothing really particularly fancy, but kind of built on the example of what we’ve done previously for that. And a lot of this is going to make use of that factory method pattern that we learned a little bit earlier in the class. By the end of this milestone, you should be able to get everything into your sidebar, have your order show up, including combos. And then the next milestone will handle the checkout process where we can actually check out, get a receipt, things like that. So looking ahead after that, next milestone we’ll do releases and checkouts. And then after that, we’ll switch to the web UI basics. So April 14th is really that deadline where the content of the class starts to trickle off a little bit as we switch over to doing web APIs. So keep an eye out for that, that’ll give you more time to work on your final project as you go.

So we’re at a good point where we can finally start to take your order in our user interface. This is one of the best parts of this class where we actually get to bring everything together and see it work as a full point of sale system. As always, if you have any questions, let me know. Otherwise, best of luck with this milestone and I will see you again next week.

Spring '25 Week 11

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 11 announcements for CC 410 in spring 2025. So this week you should be working on a milestone on releases where we’re going to actually take our project and build a release version of it that we can share out with others across the internet. This is kind of the last big wrap up part of this whole GUI process that we’ve been going through. And so for the ninth restaurant milestone, you’ll be finishing the checkout process using the external cash register library that you’ve installed and also printing a receipt so that everything comes together and we have a fully working point of sale system for our project.

So the checkout milestone, milestone nine, you’re going to install an external library mimicking a cash register. This is a library that I have written that is open source so that you can read the source code for it, especially reading the source code might be useful when you’re trying to figure out how to write some of your unit tests. It allows you to pay with cash or with credit card, and then you need to write the algorithm to make change and make sure that the cash balances in the register itself. It is a little bit frustrating because you can’t count the cash in the register while it’s open. And so you have to have the register close to count it. You open the register, you make all of the changes to the register values and close it, and it should have the same amount in the register plus or minus the sales amount. So it’s a little bit tricky to make change. Don’t worry about handling every single minor detail in that process. If you get it mostly working, that’s what I’m shooting for. There’s a definite long tail of diminishing returns as you try and get all of the edge cases for making change. I’m not so worried about that. I just want you to see the complexity in that process. And then finally, make sure that you spend some time printing the receipt and read the directions on that to get your receipt to format correctly.

So like I said, making change is hard. So be aware of that. Don’t go chasing all of the little bugs. Get it mostly working and you should be fine, but make sure it is working so that you can see that. For receipts, remember that each line on a receipt has a limited length, and so you may have to trim or adjust the layout of your receipt to make it read. maybe even look at some real world receipts that you’ve received and see how you can format your receipt to match that. I highly encourage you to use the adapter pattern that we’ve learned earlier in this class, taking my catch register library, my receipt library, making a wrapper or an adapter around it, because that’s where you can write your unit tests. And then of course you can read the unit tests that I use for my library to kind of figure out how I interact with the library and how I test it. Remember, you don’t have to test the functionality of my library, you have to test the functionality of how you’re using it and make sure that you’re calling the right functions and doing the right things in your adapters.

So after that, this is the last week of the GUI milestone. So after this week, the milestones get a lot smaller as we start working on the web interface. The web interfaces is kind of a simple process, but I want you to at least see what it looks like and compare it to the GUI interface. So we have smaller milestones, it gives you a lot more time to work on your final project over the last four weeks of the semester. So hopefully everything’s going well. Hopefully you get really excited the first time you’re able to use the checkout and see that your credit card actually matches and it works. As always, if you have any questions, let me know. Otherwise, I will see you again next week.

Spring '25 Week 12

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the Week 12 Announcements video for CC410 in Spring 2025. As promised, this week we’re going to shift gears from building a traditional desktop user interface to start building a web user interface. So this week we’re going to start talking about data-driven websites. You’ll go through a quick example to install a website framework on top of your existing project, and you’ll do that in your restaurant project as well. This is a good time to start working on your final project or keep working on your final project. Most of the milestones from here on out are much, much smaller, so you’ve got about four good weeks to really start working on your final project in this class. Remember the final project is meant to be about a third to a fourth of the size of the restaurant project, so a couple thousand lines of code is what we’re shooting for. That’s what we’re really looking at to get you to work on for this final project. So hopefully you can get rolling on that this week. If you have any questions, let me know, and I’m definitely happy to help with that.

So for the milestone, you’re basically going to set up a web framework inside your project. You’ll set up things like the web routes, the controller. We’ll also talk about using some template inheritance, and so you’ll have a master layout template for your whole page. You’ll do different templates inside of that for your routes, and eventually at the end of this, you’ll have a data-driven menu that basically generates a website that has the menu for your restaurant based on the data classes that we have. Obviously, in practice, you would do this based off of a database instead of a list of classes. We haven’t covered databases yet, so we’re using our object-oriented classes as a stand-in for a database, but really the theory is the same when you get right down to it.

So after this, we’re going to look at how we can actually add forms and custom fields to our website so that we can add custom menu items to our menu. Like I said, smaller milestones from here on out, and it gives you more time to work on the final project. Lastly, there will be one last restaurant milestone that is due on finals week, so make sure you’re planning ahead for that. That’s a really good thing to have in mind. So quick, we’re headed to the World Wide Web. Hopefully, things are going well. If you have any questions, let me know. Otherwise, best of luck on this week, and I will see you again next week.

Spring '25 Week 13

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 13 announcements video for CC410 in spring 2025. So this week you should be working on building a small RESTful API and building some web forms so that you can add custom menu items to your menu. We’re going to store those in a separate list from the classes that actually store the real menu items but it gives you an idea of what it might look like to have a web app that actually allows you to add custom menu items to our list. So you’re going to do a quick example around that and keep working on restaurant milestones for those. As before, these restaurant milestones are going to be smaller to give you more time to work on your final project, which remember that’s coming up very soon.

So like I said, milestone 11 is all about adding web forms and search results and presenting those results through your web application. So it’s a really nice way to actually play around with your application and make it a little bit more useful for your users. Other than that, we’re going to start adding some RESTful API content and giving you a lot of time to work on your final project. Remember that’s coming up in about three weeks. In the last restaurant milestone will also be new finals week. It’s a very minimal milestone where we add some serialization to the project as well. So just be aware of that, that that’s coming up. But other than the final project and the restaurant milestone, there are no other finals exams or anything in this class, just those milestones.

So looking ahead, we’re looking toward the end of the semester. It’s only three weeks to go. So make sure you’re getting stuff wrapped up. As always, if you have questions, let me know. Otherwise, best of luck this week and I will see you again next week.

Spring '25 Week 14

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 14 announcements video for CC 410 in spring 2025. This week you should be working on your fourth final project milestone. So you’ll be scheduling some time to meet with me either this week or next week to talk about your final project. There’s also the second concept quiz that’s out there. So make sure you’re looking at that and getting that done. And then there’s also a restaurant milestone and an example about using a RESTful API to be able to add and edit custom menu items to the project. And then of course, make sure you keep spending some time working on your final project. There’s a lot of different things to balance this week, but hopefully you’re finding time to get all of these things done as you get toward the end of the semester. So for the next restaurant milestone, we’re going to be building a RESTful web application that allows us to create custom menu items. We’re gonna reinforce some of the design patterns that we saw earlier this semester, such as the iterator pattern and the singleton pattern. And this is really the last time that you’re going to go through and update your UML diagram to match everything that you have going on in your web application.

Then we go to next week, we’re gonna have a quick example of using serialization to save data. So we’ll talk about some form validation and some serialization. And then of course, you’ll keep working on your final project as we get toward the end of the semester. After that, the rest of the semester is really a textbook quiz that’s going to be due on finals week. And then you’ll have your final project milestone five, which is the presentation that is due on May 16th, which is the end of finals week. For your final project itself, your deliverables are pretty simple. Just like every other project, you’re going to create a release tag on GitHub. Make sure that your release tag meets all the requirements for that project. So make sure you read the requirements page for your final project again. You should have code documentation in your code, but you may also wanna create things like a read me file or some user documentation for how to use your project. And then you will create and do a presentation.

The presentation itself should be around 15 to 20 minutes and it should go through your project both in code and demo your project and talk a little bit about the design of your project. Most students choose to pre-record this. All you do is just open up a Zoom room. hit record, share your screen, show whatever you need to do there. If you wanna present it live, you can do that. You just have to find a time on my schedule. But if you do pre-record it, I’d like you to schedule a time anyway for me to have a quick Q&A. Only needs to be 15 minutes long just so I can see your presentation, ask you a few questions about your project. Big thing to be aware of is my schedule on finals week is really busy because I take care of the computer science final project class and that eats up all of Tuesday, Wednesday, Thursday. So if you wanna meet with me on finals week, you really only have Monday or Friday and you are competing with the ICS capstone students. So if you wanna grab a time on my calendar, either Monday or Friday of finals week, for about half an hour if you’re gonna present live or for about 15 minutes if you’re gonna do a Q&A, that would be fantastic just to get that on the schedule.

A lot of students ask what their presentation should cover. Here’s kind of a quick suggested outline. You can also find this out on the materials for Canvas. You can give a quick, introduction to your project, talked about where your idea came from, some background behind, you know, what you looked at, maybe some other inspirations, things like that. Spend some time talking about the implementation, different code structures, classes, design patterns, anything you did in the implementation. Give a quick evaluation for how well your project met your original goals. Talk about future work. If you’re going to keep working on this project, what would you do next? And then, of course, give us a demo and show how it actually works.

So we’re getting toward the end of the semester. It’s week 14 out of 16. So next week is dead week and then finals week. Hopefully things are going well. Hopefully you’re getting toward the end of the semester. I will probably post one more announcements video next week for the semester and then we’ll wrap up from there. But as always, if you have any questions, let me know. Otherwise, best of luck this week and I will see you again next week.

Spring '25 Week 15

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 15 announcements video for CC 410 in spring 2025. So this week you should be working on the last couple of things in this class where we’re going to talk about some form validation and some serialization. You’ll do a quick example about that and then you’ll add that to your restaurant milestone. Other than that, keep working on your final project. This is really the last restaurant milestone and then you’ll have a couple of weeks to wrap up your final project. I believe I met with most all of you last week about your final project, so hopefully that’s all going well.

For the rest of the semester, there’s a quick quiz on some extras in the textbook that are out there for finals week and then the other big thing is to finish up your final project and present it to me either Monday or Friday of finals week. So remember the deliverables for your final project. You’ll need to have a release tag on GitHub that meets most of the requirements, so make sure you read the requirements page. Your code should have proper code documentation just like we’ve been doing in this class. It should meet all of the basic programming requirements such as having MyPy for typing. It should meet the flake style guide. All of those things still apply to your final project and then you’ll do a presentation.

Your presentation should be around 15 to 20 minutes. You can either pre-record it or you can present it live to me and then you should also schedule some time for some Q&A generally after you submit your video. So if you want, either schedule a time with me Monday or Friday of finals week. There’s lots of times open. If you pre-record your presentation, only schedule about 15 minutes for Q&A. It’s just a quick chance for me to ask any questions I have after watching your presentation before we turn in your final project. And then finally, a lot of students ask for an outline for your final project presentation. This is listed on the textbook. This is what I recommend. Basically talk about where your project came from, how you implemented it, how well it actually met your needs, talk about any future work you would do if you kept working on it, and then give me a quick demo.

Finally, last big thing in this class are teaching evaluations. Teaching evaluations will be sent out via email on finals week, so make sure you take some time to fill those out. Remember that teams are anonymous and delayed, I cannot read the T-Vals until after I submit final grades and any and all feedback is welcome both good and bad. This class has changed quite a lot over the past few years that I’ve taught it and a lot of the feedback has come directly from students via the T-Vals. So I really want you to take some time, tell me what you like, tell me what you don’t like, give me suggestions of things I could do better or things that you like that I should keep doing. All of that is very useful in the T-Vals so I appreciate your honest feedback in the T-Vals when those come out on finals week. So other than that we’re waving the checkered flag we’re at the end of the semester hopefully things are going well. This is the last announcements video I’m going to do for the semester so it’s been a great pleasure having all of you in my class this semester and I wish you best of luck in the future.

Fall 2025

Subsections of Fall 2025

Fall '25 Week 1

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week one announcements video for CC410 in fall 2025. Welcome to a new semester. My name is Russ Feldhausen. I’ll be your instructor this semester. My contact information is here. It’s on the syllabus. It’s on the Canvas homepage. It’s in the introductory video. Hopefully you can easily find a way to get a hold of me. Please be aware that I work remotely out of Kansas City most of the week, so I won’t be available on campus. I do come to campus on Mondays. So if you want to meet with me in person, Mondays in the morning is probably your best bet to do that. But since this is an online course, I’m guessing most of you might be online as well. And so I should actually be really easy to reach either via email, Ed Discussion, Teams, Discord, whatever you want to use.

So in this course, the big picture is we’re going to do advanced programming. We’re going to reinforce a lot of the object-oriented programming principles you have learned earlier in this program. We’re going to introduce things such as unit testing and design patterns and really give you a lot of practice to become a better, more well-rounded programmer in this program. We’re also going to introduce a lot of new content such as building graphical user interfaces or GUIs, web interfaces, data serialization, interacting with web APIs, all sorts of stuff like that. The way we’re going to do this is we’re going to do several large example projects, which are guided examples that I walk you through step by step on a video. These will probably be the longest videos you’ll come across in this class where some of the examples are going to be 30, 45 minutes long. The nice thing is having it in a video, you can pause, rewind, go fast, whatever you need to do to get through that example. But I take you through the example step by step by step so that you can get that put together. And then, of course, we’re going to do a restaurant project, which is basically the same idea, but you’re going to do the work yourself. So whatever we do in the examples, you’ll then apply that to a restaurant project. We’re going to build a point of sale system for a fictional restaurant, which I think is a really fun project to do. And then throughout the semester, you’ll also be working on your own final project. The final project is going to be smaller in scale than the restaurant project and probably related in structure and outcomes. And we’ll talk more about that final project as we go throughout the semester. But just be aware that that’s coming.

So in this class, we’re going to introduce you to a lot of new technologies. First and foremost, we’re going to use Git and GitHub Classroom. Git is the code management tool that most professionals use in industry. It’s a great way to keep track of your code and integrate with others. So we’re going to start learning how to use Git and GitHub. We’re going to use automation tools in Python such as TOX so that we can automatically run our unit tests, run our style checkers, run our type checkers, anything like that. So we’re going to do some automation. We’re going to introduce type checking in Python. Python is a strongly typed language, but it is a dynamically typed language. And so we’re going to introduce type checking to make it closer to a statically typed language. I think this really helps as your projects get bigger. It helps you keep track of what your actual data types are and how they interact with each other. So we’re going to introduce some of that. We’re going to introduce unit testing so we can actually test our code and make sure it works. Unit testing is super important. I’m working on a side project right now and wrote about a thousand unit tests for it over the course of the summer. And those unit tests helped me fix dozens of bugs in my code that I probably would not have caught without going through unit testing. We’re also going to enforce a programming style guide. So we want you to start writing your programs following the PEP8 style, which is the standard Python style for programming. So this is things like spacing, the length of your lines, the order of your imports, things like that, to make your code fit a little bit better with a professional coding style. We’re also going to learn how to write some documentation for our code using some comment strings that go at the beginning of each function and each class in your code. So lots of new stuff that we’re going to do in Python this semester.

So like I said, final project, you get to choose the topic for your final project. It will roughly align with some of the skills we’ve used in this class, but this is really where we get to take the training wheels off and let you run with a project that is your idea, your own topic. I really encourage you to align it with things you’re interested in. I usually work with students throughout the semester to help you find a final project topic and kind of fit it into the scope and scale of what’s actually achievable within this class. So don’t worry too much if you don’t have an idea right now. I will work with you throughout the semester to come up with an idea. You’ll go through a few milestones with that. And then at the end, you’ll give a presentation. With this class, we usually just do recorded video presentations to make it a little bit easier since we’re teaching online.

So we are looking down the barrel of week one. Week one is mostly the administrivia week where we just introduce the class. But the big thing we do is we do a project called Hello Real World. If you remember the Hello World project, which is probably the first programming project you ever did, we’re going to do that again, but this time we’re going to do it as if we are a professional software engineer. So we’re going to have unit testing. We’re going to have style guides. We’re going to have type checking. We’re going to have all those cool stuff in a Hello World program. I think it’s kind of cool. You’ll probably also schedule your first final project with me to meet with me probably next week, the week of Labor Day, just so we can chat and get to know each other a little bit and start talking about ideas for your final project. Yes, we’re going to start talking about your final project’s first week of class. You only got 16 weeks. We got to get going on it. So be aware of that. Also, please take note of office hours. I don’t typically hold formal office hours, but I have a schedule link on Canvas, on the syllabus, on Zoom. And it’s also in the email signature of every email you’ll ever receive from me. You can click that, schedule a one-on-one office hour time anytime that I’m available. I’m happy to do that. In this course, like I discussed in the intro video, we use the CC410-help email address. We also have an Ed discussion platform. And so you’ll see posts on there. I’ll make some mega threads for each milestone, for each, I’ll make one for the bug bounty. We’ll have an introductions post, things like that. So Ed Discussion is a great place to chat with me and other students. I will also use that to post hints and tips and tricks for the assignments as students are going through them. So please keep an eye on Ed Discussion. Maybe bookmark that and check that once in a while, just so you see all the discussion that’s going on there as well.

Then we’ll switch over to week two. Week two, the first week where we really do a big project where we’re going to start building an open, an object-oriented programming class library that is the basis for our restaurant project. We’re going to build the menu as all of these different classes representing the entrees, sides, and drinks available on the menu. This project is huge. It’s going to be about 2,000 to 2,500 lines of code, depending on how you write it. However, it is mostly boilerplate. Once you write one entree, the other entrees are very similar. So it’s not like you’re writing 2,000 new lines of code, but the end result is you’re going to submit a project that is 2,000 lines of code. This is already way bigger than anything you’ve done in this course, so in this program so far. So just to give you an idea of the scope and scale of what we’re doing, your first week, you’re going to write about 2,000 lines of code. It’s big. Best advice I can give you is to be thoughtful, take some time, think about what you’re doing. Be careful as you copy paste. It can make things go better, but it can also cause a lot of problems. As a quick side note, in earlier CC courses, you were discouraged from using copy paste. I encourage you to use copy paste in this course. I discourage using any online tools such as ChatGPT, Claude, any of those tools. You really need to learn how to do this yourself. Especially a lot of those AI coding tools will cause several mistakes in this program. I have used those tools to try and do these assignments and they create a lot of bugs. And usually you spend more time fixing the bugs than if you just learned how to do it yourself. So be aware. I’m warning you now.

Then week three, we’re going to go into unit testing and documentation. We’re going to take all the code we wrote in week two. We’re going to write unit tests for that. That balloons the size of your project to about 4,000 lines of code. When I did my model solution a couple years ago, I ended up with 423 unit tests. Your mileage may vary. Your number might be a little bit different out of that. But again, the code for the unit test has a lot of repeats. So again, you’re not writing that many lines of code. It’s just a big project.

And then from there, we’ll introduce some more concepts around inheritance, polymorphism. We’ll refactor some of your old code to simplify the structure of the project. And then by the end of September, which is week five, we’ll be talking about your second final project milestone already at that point. And then after that, the rest of the semester, like I promised, we’ll introduce graphical user interfaces, interfacing with external libraries, working on the web, doing data serialization, and so much more. This is one of my favorite classes to go through.

So one thing that you can do is you do have an option of choosing which restaurant you want to work with. I have two different restaurant projects that I’ve written over the years. The first one is called Game Grub. Game Grub is the one that I used for the last couple of semesters. It is linked in Canvas. It’s the easy one to get to. Game Grub is based on video games and board games and things like that. So be aware of that. You can also do one that I call Starfleet Subs, where it’s a sub-sandwich restaurant that is based on Star Trek. That is from a prior semester. It’s available online. So if you’re interested in doing Starfleet Subs instead of the Game Grub project, just let me know and I can show you how to switch around and find those milestones online. Both of those are completely available. I don’t intend to make a whole lot of changes this semester. I think the only change I’m going to make is a couple of bug fixes in the checkout library that we use way down the line in like milestone 8 or 9. So I will talk about that when I get there.

So some big advice for this class. This class is a four credit hour class. I cannot stress that enough. It is four credit hours. That means the expectation is that you’re spending 12 to 15 or 16 hours each week on this course. So take a good hard look at your schedule and make sure that you have 12 to 16 hours available on your schedule. If you’re working 40 hours a week and you have kids, it’s going to be tough. I cannot stress that enough. I have had so many students that are wonderful programmers in this class that do not set aside enough time and they get behind and this class gets on top of them real quick. So schedule your time wisely. Make sure you’re setting aside enough time to work on this. Start early and leave time for questions. Most of the milestones are going to be due on a Monday or Tuesday. If you’re starting the milestone on Saturday, that means you can’t even get an answer from me sometimes until Monday or Monday afternoon. And that does not leave you a lot of time to finish the milestone, especially because I’m on campus on Monday and I teach Monday afternoons. So it takes me a while to catch up from the email backlog over the weekend. So start early. I encourage you to start working on a project like Wednesday during the week if you can. So you’ve got time to get your questions answered. Ask questions, get feedback. If you’re not sure on something, commit it to GitHub, send me your link and say, hey, I just did this. Does this work? I can take a look at stuff and get you on track before you get too deep into the weeds.

Like I warned earlier, use copy-paste carefully. Make sure that you’re not adding more issues by just blanketly copy-pasting code without thinking about it. But once you get one entree written or one side or one drink written, a lot of that code is boilerplate that you can copy over and very carefully modify to match the other different setups. As said, commit to Git frequently, commit early, commit often. The more you commit to Git, the better off you are, because then if anything happens, if you make a mistake, if Kodio crashes, if you accidentally delete a file, you’ve already committed it to Git. You don’t have to worry about that. Every semester, I have a little flag that I can put up every time that a student deletes something and then asks me if I can restore it in Kodio. And I have to tell them I cannot because Kodio does not have backups and you should have committed that to Git. So do that. If you want to use any online resources, you’re welcome to do that. If you get some code from Stack Overflow or something like that, like if you can’t remember how to sort a list or you don’t remember how to do this, go find an online resource and just make sure you cite it in your code. The big thing I tell students is don’t use an online resource to do the whole assignment. But if there’s a bit of code that you don’t remember how to do, that’s how row programmers work. I don’t remember how to sort a list in Python very often. I go find the Stack Overflow or the document or whatever that shows me how to do that. And I just put a little note in my code. It’s like, I got this from here. That’s what you should do. So if you’re not sure, ask me. I’m not huge on stomping on plagiarism and stuff. But if I look at your code and I don’t think you wrote it, then we’re going to have issues. So just be aware of that. Okay.

Other than that, I look forward to this semester. Like I said, this is one of my favorite classes to teach. I think it’s really exciting to see all the different things that you can learn in programming so quickly. I love working with students in this class. So please feel free to keep in touch with me. I have the Ed Discussion board, like I talked about. I’ll be pretty active there. I’m on Teams. I’m on the CS Discord server. You’ll also see some messages about tea time office hours. I usually host those on campus on Monday. It’s a great time to just come in and chat with me about anything outside of class. If you want to just hang out, talk about life, the universe, and everything. And then, of course, I have my one-on-one office hours that you can schedule anytime using the link on the Canvas homepage in the syllabus, my email signature, whatever you want. So best of luck this semester. I’m rooting for you. I’m looking forward to working with you. You’ll see a video like this probably every week, if not every other week. So just be aware of those. Don’t get posted on Canvas just like this one. But otherwise, best of luck, and I will see you again next week.

Fall '25 Week 2

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week to announcements video for CC410 in fall 2025. So this week you should be wrapping up the first module which includes the Hello Real World project. I really like the Hello Real World project because I think it takes the classic Hello World project that you start with and really expands upon it in a way that makes it match more what you’d see in the real world with things like type checking and unit testing and all of these other things that we’re going to do in this class. So hopefully you’re getting that wrapped up and getting that committed and pushed to GitHub so that we can get that graded. As always, if you have any questions with that, let me know.

Also this week you should be scheduling your first final project check-in. Basically what I want you to do is schedule a 15-minute meeting with me via Zoom, either on Calendly or on my booking link. Mainly it’s a chance for us to meet briefly on Zoom, get to know each other, and to give me a chance to explain the final project and some of the things going on in this class. I like to do an in-person meeting like that during the first couple of weeks of the semester, just because this is a small class. There’s only about 10 students this semester. So it really gives me a chance to get to know each of you individually and really talk to you about the class and what’s going on. So please make sure you get that scheduled so that we can meet sometime in the next week or two to start with that.

So this week we’re going to introduce the second module, which is object-oriented programming. We’re going to reinforce a lot of the object-oriented programming things that you’ve learned earlier by making classes, functions, constructors, things like that. You’ll do a small example project. We’re going to come back to that example project a few times, but you’ll do a small example project, and then you’ll start working on the first restaurant milestone. And remember to do the restaurant milestone, you’ll kind of start by doing the same things that you did at the beginning of the Hello Real World project, but then you’ll start building your restaurant classes instead. Also, please remember for this semester, you can choose which restaurant project you want to go through. I discussed this briefly in some of the earlier announcements. There’s the one that’s linked directly in the textbook, and then there’s an extra one that’s available. You can choose either one of those. It’ll be pretty clear in your submission which one you have chosen.

So other than that, please don’t forget that there are updates on both the announcements and the ed discussion board, specifically in the Canvas announcements. The second announcement is a read this announcement that talks about some of the updates in this course, things like new Python versions, issues with Codio GUI since we built this course, things like that. I have not had the time to go through and fix all of those in the underlying materials yet, but I do have an announcement that lists all of those. Most of the announcements for me are going to come from the Ed Discussion Board, except for these weekly announcements, which will get posted on Canvas. When you see grading, you’ll see there’s a rubric on Canvas. I’ll also leave some code comments on GitHub. You’ll get an email from GitHub with those code comments. Otherwise, I think things are going well. So hopefully things are working so far so good. But as always, if you have any questions, let me know.

So for the first milestone, like I said, it’s going to be a lot of packages and classes, a lot of boilerplate code to make object-oriented programming work. If you want, you can make things easier on you later and go ahead and worry about things like the Flake 8 style checker and adding your documentation comments as you’re doing your writing. But to ease you into this class, I don’t actually require and grade those until milestone three. So you don’t have to do them right now, but I encourage you, if you want to make life easier for you later, go ahead and get used to adding those now as you work. My estimate for milestone one is it may take anywhere from three to eight hours to complete. I completed it when I was doing the model solution in about an hour. So usually I figure with my experience, I go quite a bit faster than you would. And that’s totally fine. You know, I have 20 years of programming experience, but it still takes me about an hour to go through the first milestone. And then your expected size is around 1,500 to 2,500 lines of code. It varies widely depending on how you write this up. And of course, if anything’s unclear in the milestone, anything you want to know more about, you can post on the megathread in a discussion or you can send me an email and I’d be happy to answer those questions.

So looking ahead after this, Module 3, we’ll talk about some documentation and unit testing. Module 4, we’ll introduce some inheritance and polymorphism into this project. We’ll refactor some of our additional code. And then Module 5, we’ll introduce things like debugging statements, logging statements, Lambda expressions. And then by the end of September, when Module 5 is due, we’ll have our second final project check-in. At that time, we’ll start talking more specifically about final project ideas for your project. So that’s where we’re going this semester. I hope things are going well for you. As always, if you have any questions, let me know. Otherwise, best of luck. And I will see you again next week.

Fall '25 Week 3

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week three announcements for CC410 in fall 2025. So, this week you should be wrapping up the second module, which I believe the milestone for that is due pretty soon. So, make sure you get that turned in. You’ll be doing the example for that, and you’ll be doing the first restaurant milestone. For this first restaurant milestone, I will try and give pretty detailed feedback, usually within a day or two of getting it submitted. So I’m hoping to work on that either today or tomorrow of this week. I also will give you feedback on your Hello Real World project. I haven’t had time to get to that yet because we had some other things going on this semester, but I will get you feedback pretty quickly for your first restaurant milestone so you can roll that into your second milestone, which will be new next week.

So this week, we’re going to introduce some new concepts around documenting your code, doing unit testing, and developing some UML diagrams for your code. You’re going to do a quick documentation and testing example. Make sure you finish that example completely. Read the instructions, make sure you get everything done. And then for the second restaurant milestone, you’ll be adding documentation comments and unit testing to your code. So for this milestone, you’re going to write around 400 unit tests. That’s including all of the parameterized unit tests. It depends a little bit on the approach that you take, but my model solution had around 400 tests. You’re also going to write some documentation comments, and you’re going to include a UML class diagram in the root of your GitHub repo. Make sure you put that in the correct place. Generally, you need to put that inside of your repository folder, not at the top level, because then it won’t get included in your GitHub repository.

Again, this milestone should take you anywhere from three to eight hours to complete. This will be around 3,500 to 4,000 lines of code, including the documentation comments that you’re going to add. And as always, feedback is welcome. So one big hint I will give you for this milestone, do not look at your original source code when writing the unit tests. Instead, go back to the original documentation for the project and make sure your unit tests are checking against that, not your source code. A great example is the price for every item. Instead of looking at your source code for the price of an item, go back and look at the milestone one requirements for the price of that item and write the unit test based on that. The reason you should do that is if you mistype the price in your source code, your unit test is also going to have the wrong price in it. So make sure your unit test is testing the specification, not the code. Another thing you can do is use globalized attributes and generalize things, but you have to be careful. You can’t necessarily generalize the individual ingredients, but you can generalize things like the toppings, the sizes, things like that. And so look at using parameterized tests.

Here’s a great example in Python of using parameterized tests and some global variables. For example, here you can see that I have globalized the price and calories. And so then in my code, I’m just checking against those variables instead of having the values put in. That way, if I want to copy paste this entire block of code, all I have to do is change the variables at the top and do a control F for the item and change it to a different item, and then you’re good to go.

So another big thing to keep in mind in this class is a growth mindset. The milestones in this class are challenging. They are meant to be challenging. You don’t learn anything and you don’t grow as a programmer if you are not challenged. So make sure you read the milestones carefully. Ask me if you have any clarifications and start early on these milestones so you can work methodically. Generally, a method for not succeeding in this class is to wait until Sunday or Monday and starting on the milestone the day before it’s due. You generally won’t have enough time. And if you run into any problems, it may take a while for me to have time to get back to your questions. So the earlier you start, the earlier you have questions, the better off you are. And then, of course, we are using Git and GitHub. So commit early and commit often. That way, if you make a mistake, you can always roll back to a previous commit instead of having to carefully undo your changes. That’s what that tool is there for.

So looking ahead after this milestone, the next big module is on inheritance. We’re going to refactor our code a little bit to add some more object-oriented inheritance in it. Then we’re going to spend a little bit of time doing some debugging. And that will get us to about the end of September where we’re going to have our second final project meeting. Then we’re going to talk about design patterns and test doubles. If I had to pick, I think modules six and seven are probably the most useful new content we’re going to cover in this entire class. So please be aware of that. And then after module seven, we’ll start introducing graphical user interfaces, web interfaces, etc.

One other thing to be aware of, tomorrow is the ACM Back to School Bash for Computer Science. So for those of you that are on campus or near campus and want to check out all of the cool student activities and organizations that are going on in computer science, I highly encourage you to attend the ACM Back to School Bash. This is open to everybody, including ICS students, including online computer science certificate students. Anybody in this class is welcome to attend. There will be free food, fun, and events. It is Wednesday, September 10th, which is tomorrow from 5 to 7 p.m. in the engineering building atrium on campus. So please be aware of that. If you want to come join us, I encourage you to do that. It’s a really great way to see what’s going on in computer science and all of the student organizations.

So other than that, that’s all I got for you this week. Hopefully, going through all the process of writing these unit tests is very valuable to you. If you have any questions or concerns, let me know. Otherwise, best of luck, and I will see you all next week.

Fall '25 Week 4

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week four announcements video for CC410 in fall 2025. This week you should be wrapping up the next module, which is on documentation, testing, and creating a UML diagram for your project. You’re going to do a quick example where you add documentation and unit testing to an example project. And then you’re going to be working on the second restaurant project, which is all about adding documentation and unit testing to your restaurant project. That milestone can be pretty big, but hopefully it goes well. If you have any questions about unit tests you should be adding, please let me know.

This week we’re going to shift gears and talk a little bit more about inheritance and polymorphism, which is one of the really important concepts in object-oriented programming. You’ll do a quick example about inheritance where you get to explore what that looks like. I’ll also ask you to do a quick survey that I call the start, stop, continue survey. This is just a quick beginning of the semester check-in to see how things are going. It’s completely anonymous on Qualtrics. I get no data about who you are, but it just gives me an opportunity to know whether you want me to start doing something, stop doing something that I’m currently doing, or continue doing something that you really like that I should keep doing in this class. I take that feedback very seriously, so please let me know if there’s anything you’ve got. And then also, hopefully this week you’ll get some time to be thinking about final project ideas in preparation for our next project check-in here in a couple weeks.

Then next week after that, we’re going to do a module on debugging and logging. We’re going to learn about Lambda expressions. You’ll do a third restaurant milestone. So there’s a couple of weeks to work on that milestone. And then already the end of next week, you’ll be scheduling your second final project check-in. So for the upcoming milestone, this is the first one where I enforce all general requirements. So everything that you did for the Hello Real World project, including documentation, unit testing, flake style checking, MyPy, type checking, all of that stuff needs to be implemented in TOX. It needs to be automated and it needs to all work. In general, if you want 100% on Milestone 3, when I run a brand new TOX run, it should give me that little green all test passed at the very end. So make sure you’re targeting that level. That’s what we’re looking for. For that milestone, you’re going to refactor a few classes. You’re going to add some inheritance to those classes, and then you’re going to update your UML diagram. This milestone is actually much smaller than the last two. It’s only about 1,500 lines of code, new or changed, but it does require a lot more thoughtful approach to how you add the inheritance and refactor the existing code. And as always, feedback is welcome if you have any questions.

So some big hints on this milestone. Just like every other milestone, work in small chunks. Don’t try and tear everything apart and put it all back together. Instead, work on one thing. Add the interface in first. Add in a parent class. Get that to work and then keep working. Use your unit tests. Now that you have unit tests, you can run your unit tests to check to make sure your syntax is correct, make sure you didn’t change any functionality. Don’t forget that you can commit early and commit often. GitHub is your friend. If you make a mistake, you can roll back to an earlier commit. It’s really easy to do. You can even try test-driven development. You could work on writing your unit tests first and then writing code to actually pass those unit tests later. You can work on inheriting. One thing I want you to do is definitely inherit the item interface on the base class. So for example, your entree, you’re going to have a base entree class. You should inherit the order item interface on that base class, not on the individual entree classes themselves. That way you get that chain inheritance that works a lot better. And then, of course, ask any questions you have on syntax. For some of you, this might be the first time you’ve really done some of this object-oriented stuff in Python. So let me know if you have any questions.

So looking ahead after that, like I said, we’ll do a module on inheritance debugging. Then we’ll get into design patterns and test doubles, which like I’ve alluded to before, I think are the two most important modules in this class. And then we’ll shift over and do some stuff with UIs, etc.

One thing I want to remind you of that’s coming up is every week I host tea time office hours within the computer science department. It’s a chance for you to come in and talk to computer science faculty, staff, advisors about life, the universe, and everything. For tea time, we tend to do a few panels every semester. And so next Monday, September 22nd, we’re hosting a career fair prep and industry panel. This is a chance for you to meet with the Engineering Career Fair Career Center rep who’s going to be there, Liz Parks. We’re also going to have several folks from industry at varying levels of seniority and industry there to give you tips on how to succeed at a career fair, resume tips, interview tips, anything you want to know right before the Engineering Career Fair, which is going to be, I believe, Wednesday. So again, tea time office hours. It’s Monday, September 22nd at 10 a.m. We hold this in Engineering Building 2168, which is the conference hall on the west end of the building past all the CS offices. Or you can join via Zoom. The Zoom link is hosted on the homepage on Canvas. It’s easy to find, or you can always post and I will let you know.

So hopefully things are going well. Hopefully you’re not at that point in the semester where things are on fire. It is week four. I know that this is the week where difficulty usually ramps up in a lot of classes and this one is included in that. So I hope things go well. But as always, if you have questions, let me know. Otherwise, best of luck and I will see you next week.

Fall '25 Week 5

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week five announcements video for CC410 in fall 2025. This week you should be wrapping up a module on inheritance and polymorphism and playing around with an example on inheritance. Also in this week, we’ve got a start, stop, continue survey, which I think is one of the really important things I want you to get through in this class. So please take a little bit to work on that. That just gives me some quick feedback on how things are going. And hopefully you’ve got a little time to work on the final project because we’re working on a two-week module. There’s going to be a little bit of gap in there. So hopefully you can start working on some final project time as well.

This week we’re going to have a module that introduces debugging and logging. There’s going to be a small example around that. We’re also going to introduce Lambda expressions, which are really cool. We’re going to use Lambda expressions a little bit in our unit testing, and then they come up again when we start building some of our user interface. So you’ll do a quick example around that. And then you should be working on your third restaurant milestone as well as scheduling your second final project meeting for sometime toward the end of this month. Yes, we’re already there as promised. We’re meeting again at the end of September. It happens pretty quickly.

So big things to keep in mind for milestone three. This is the first milestone where I will enforce all general requirements. That means I expect your code to fully pass a MyPy type check, to have unit testing with a very high level of code coverage, to have Flake 8 with a very low number of style problems, especially in your source folder. The test folder, I’m not so worried about, but the source folder, I definitely want that to pass a flake style check. You need to have unit tests for most everything. You need to have documentation for everything in the source folder at least. And so all of those things are going to bear into account. Ideally, when I run talks on your program, it should get all the way to the end and have a little green message that says everything passed. You’ll also be updating your UML diagrams. So there’s a lot of stuff going on outside of coding in this one. The actual code for this is only about 1500 lines of code, new or changed. So it’s not so much difficult with the code, but it’s more the theory and rearranging things to make it work. And then of course, as always, feedback is welcome if you have any questions.

So like I said last week, big hints for Milestone 3, try and work in small chunks. Commit to GitHub early, commit often. That way, if you screw something up or make a mistake or want to roll back to a previous state, you can do that. You can consider trying test-driven development this time. Write your unit tests before you try and implement them. And my big hint, of course, is it’s not clear in the milestone, but make sure you inherit the item abstract class on the base classes. So Entree, Drink, and Side should inherit that item interface, and then all the other classes should inherit from Entree, side, and drink, which will then also inherit item, but you don’t have to explicitly do that because of the transitive inheritance. And then, of course, don’t be afraid to ask questions on syntax if you have any questions there.

Looking ahead after this module, we’re going to get to module six and seven, which are design patterns and test doubles. Those are, I think, two of the most important modules in this class. So I really want you to pay attention to those. Then we’ll switch over and start teaching a little bit of desktop GUI, and eventually we’re going to get to some web GUI as well.

So hopefully you’re doing pretty well. I know right now the weather does not feel very cold out, but I’m hoping that soon we will get to the wonderful part of winter where it’s nice and cold and snowy. And so instead of enjoying how hot it is outside, we can enjoy how cold it is outside. But hopefully things are going well. As a quick side note for people that watch these videos, I am trying some new microphone settings this week. So if my microphone sounds better or worse, let me know. Hopefully things sound a little bit better. I’m trying some different things to make my mic sound not quite as sharp as it had. So if you have any feedback on that, let me know. I’m constantly playing around trying to get the settings right on this new mic. But if you have any questions, let me know. Otherwise, best of luck and I will see you again next week.

Fall '25 Week 6

YouTube Video

Resources

Edited Transcript

Hello and welcome to the Week 6 Announcement Studio for CC410 in fall 2025. So this week you should be working up the module that introduces debugging and logging. You’ll also do some Lambda expressions. There’s an example around that. And then you turning in the third restaurant milestone, which is all about inheritance and polymorphism and adding some of that to your project. And hopefully you should be scheduling the second final project meeting with me sometime in the next week or two so we can start talking about some specific ideas you might have about your final project in this class.

So this week we’re going to work on design patterns. I think it’s one of the more important parts of the class. So you’re going to do an example working around design patterns. You’re going to add some classes to your restaurant that represent various design patterns. And then the other thing you’re going to work on is the first concept quiz in this course. So for the milestone, you’re going to add a class to represent an order. So it’s a list of items. You’re going to have a combo, which is a set number of items, an entree, a side, and a drink that will have some special features to it. You’re going to make a builder that can build those combo classes for you. And then you’re going to have a singleton class that keeps track of the next order numbers so that when you create new orders, you’ll be able to keep track of that. Don’t worry about unit tests for this one. We’re going to do unit tests for this one in the next milestone. Originally, I did this as a big two-week milestone, but I found it’s easier to have this kind of split out between the two milestones.

So the second thing you’re going to work on this next week is the first concept quiz. This is not an exam, but this is meant to be a quiz of your understanding of some of the deeper concepts that we’re covering in this class. There’s a two-hour time limit on this concept quiz. It is open book, open notes, open code. However, please don’t use tools like ChatGPT to answer these questions. I really want to see your understanding and your thoughts behind some of these concepts. It’s going to test things such as your understanding of object-oriented programming theory, your comprehension of code and UML, and a little bit of some of the unit testing that we’ve covered as well. So do your best on this. It kind of gives you a good checkpoint to see where you’re at and how you’re doing on the concepts in this course. And so that’s coming up later this week.

The other thing to bear in mind, I will be fully remote the rest of this week. Wednesday through Friday, I’m going to be working outside of the office. And so because of that, email responses are going to be slower. I have my calendar blocked off, but you can email me if you want to schedule an appointment. I just won’t have quite as much flexibility to immediately be available for an appointment, but I will get back to you. So if you have questions, drop them in an email. Use the usual communication tools. I will respond. It just might be late in the evening, early in the morning when I have time. So just be aware of that coming up.

So looking ahead after these modules, we’re talking about test doubles. We’re going to introduce some things about graphical user interfaces and event-driven programming, and then we’re going to go from there. So hopefully things are strumming along okay this semester. Things are seem to be going well. If you have any questions, let me know. Otherwise, best of luck, and I will see you all again next week.

Fall '25 Week 7

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 7 announcements video for CC410 in fall 2025. This week, we’re going to be introducing the topic of test doubles. This is how we can create fake versions of classes in our unit tests so that when we’re testing a class that depends on other classes, such as our order classes or combo classes, we can add in fake other versions of the classes that it depends on so that our unit test tests only the functionality in the class we’re testing. It’s a really powerful tool. It’s something that we should learn very clearly in this class. So it’s one of the big outcomes that I want you to get. So you’re going to work on that.

Then you’re going to work on your fifth restaurant milestone, which is adding a lot of unit testing using these test doubles to test the new stuff that you added to your restaurant project. And then also don’t forget the concept quiz is out there on Canvas. So make sure you’re getting that wrapped up before the due date. So like I said, Milestone 5 is all about unit testing for the design patterns that we worked on previously. So things like the combo class and the order class. You’re going to use a lot of test doubles for these. I expect your unit tests to use these test doubles, whether you think you need them or not. You really should be using them. And so make sure when you’re writing your tests that you’re focusing only on testing the one class that you’re trying to test. So when you’re testing a combo class, assume that everything else is working and you’re just testing the combo class itself. But if you do this correctly, it gives you access to a lot more powerful unit tests as you go.

Looking ahead after this module, once we’re done with this, we’re going to shift over and start introducing graphical user interfaces. So you get to work on that for a little while. Then we’ll talk about some things like libraries, web APIs, and more. So it’s week seven. We’re close to the middle of the semester. Hopefully things are going well. If you haven’t already, make sure you’re scheduling your second final project check-in with me to chat about that. Other than that, best of luck. Have a good week. And I will see you again next week.

Fall '25 Week 8

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the weekend announcements video for CC410 in fall 2025. So, you should be wrapping up the work on test doubles and scheduling your second final project meeting with me. Also, the concept quiz was due. And so I’ve got most of those graded that are submitted. So, you should be seeing grades on Canvas. If you have any questions on that first concept quiz, let me know. But generally, everybody did really well. So I’m very impressed with that.

This week, we’re going to shift gears and start working on a graphical user interface. So, we’re going to do some basics this week of just building out the basic structure of a user interface. And that will be your next restaurant milestone. And so, I’m going to give you an overall GUI structure that I recommend for this project. You don’t have to follow that example, but if nothing else, I give one example that I think makes a lot of sense for what we’re doing. Make sure you read the hints, but feel free to get creative. If you want to make this project your own, you can change some of the layouts, some of the colors, fonts, structure, whatever you want to do, as long as it meets the requirements that I give in the project.

So looking ahead after that, we’re going to spend some time on event-driven programming, adding some functionality to our user interface, adding in an external library to handle receipts and checkouts and things like that. And then eventually here in a few weeks, we’ll get to web APIs and some other information there.

So we’re at the halfway mark of the semester. I’m not going to have too much to say this week. Hopefully, things are going well. If you haven’t already, please register for Hack K-State if you’re interested and you’re in Manhattan. It is this weekend. You can basically hang out in the business building with computer science folks all weekend, get free food, work on your homework, work on projects for Hack K-State, whatever you want to do. It’s a great event, so make sure you register for that if you’re interested. Otherwise, best of luck, and I will see you again next week. Bye.

Fall '25 Week 9

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week nine announcements video for CC410 in fall 2025. This week you’re going to be working on some parallel programming examples to give you an idea of how we work in multi-threaded environments. We’re also going to do another example on event-driven programming, which is how we actually add interactability to our user interfaces. And then finally, you’re going to do a restaurant milestone where we’re going to take the user interface that you built last milestone, and we’re going to add some event-driven programming to it so that the button clicks actually work and it actually starts doing what we want it to do.

So, one thing you might run into in this particular milestone is issues with testing. The biggest problem we run into is the Kodio boxes have limited memory. A lot of them only have 512 megabytes of RAM available. Because of that, we can’t just spawn off a whole bunch of tests and expect it to work. For Python, the biggest thing that we’re going to do is run our tests in batches. And so I show a little bit of how to do that in the project and in the milestone. Basically, it just involves adding more unique commands to your tox file so that you run the tests in individual batches instead of trying to run them all in one shot. If you have any trouble getting your unit tests to run nicely in Kodio, just let me know. I’d be happy to help you with that.

So looking ahead after this, the next couple of modules, we’ll finish up our user interface by adding in some external libraries and building a release version of our app. And then after that, we’re going to switch over and start working on web APIs and some other information as we get toward the end of the class. And those modules are also designed to be a little bit smaller to give you more time to work on your final project. So we’re close. We’re getting there. We’re slowly getting toward the end of the semester. We’re at week nine right now. So hopefully things are going well. As always, if you have any questions, let me know. Otherwise, best of luck. And I will see you again next week.

Fall '25 Week 10

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 10 announcements video for CC410 in fall 2025. So, this week we’re going to spend a little bit of time talking about external libraries and how we can download and install a library into our code. We’ve already done some of that before with some of the other tools, but this is going to be a library that we’re going to interface with directly within our code. Then you’ll start working on the next restaurant milestone. And of course, we have another one of those start, stop, continue surveys that gives you a great opportunity to give me quick in the middle of the semester anonymous feedback if there’s anything you’d like me to know about the class.

So for the milestone, we’re going to start working on the sidebar to handle our orders. We’re also going to add some extra buttons to the panel for dealing with combos. We’re going to do some basic unit testing on our user interface. And one of the big things we’re going to do is we’re going to switch around and use the factory method pattern for finding the different panels that we need to load within our UI. So this is the next to the last real big milestone with all the stuff that we’re doing in the UI. And then the next milestone, we’ll work on the checkout process using that external library. So be prepared for that.

So like I said, looking ahead after this module, we’re going to spend some time on our checkout and building a release of our project. And then we’ll switch over and spend some time doing web UI basics. The web modules from module 12 onward are going to be a lot smaller than the normal restaurant milestones. That’s really designed to give you more time to work on your final project as we get toward the last month of the semester. So hopefully things are going well in this semester. As always, if you have any questions, let me know. Otherwise, best of luck as you work on this milestone, and I will see you again next week.

Fall '25 Week 11

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 11 announcements video for CC410 in fall 2025. So, this week we’re going to work on another project all about building a release version of our software. This is a packaged version of our software that we can provide to other people that aren’t programmers and allow them to use it as quickly and easily within their own projects as we would in ourselves. So we’re going to use a quick example of releases and then we’re going to update our restaurant project by adding a checkout library to help us actually finalize the sales process of our point of sale system.

So for Milestone 9, we’re going to insert an external library. We’re not going to build a release version ourselves, but we’re going to insert a library that is a release version of a Python library. It’s going to simulate allowing you to pay with cash your credit card. Obviously, with cash, you need to do some work to make change. And then, of course, it also has a library for printing a receipt. So we’re going to build all of those things into our project.

Some big hints for this milestone, making change is hard. The algorithm for making change can be a little complicated, especially when you’re dealing with the real world situation where the cash drawer has a limited number of each digit. So what I encourage you to do is make change, assuming you have infinite numbers of each denomination of currency, and then only if you have time and get that working should you try and do the thing where you actually deal with the case where you might be out of ones and have to substitute a five for five ones and things like that. The other thing you’ll need to do with your receipts is each line on the receipt has a limited width. It’s in the documentation, so make sure you think about that. You can truncate your code or have it wrap down to the next line.

In both of those cases, I encourage you to use the adapter pattern that we learned earlier this semester in our discussion on design patterns to wrap the change drawer and the receipt printer in an adapter of your own code. And then, of course, you can write unit tests against your adapter functions and then just have an untested function at the end that actually does those changes on the change drawer. So for example, you have an adapter function that figures out all the changes to be made and returns a dictionary of all the things to be updated in the cache drawer. You can unit test that code and then have a separate function that just applies those changes to the cache drawer. Same thing with the receipt is have a function that generates a list of strings that will be printed to the receipt and then have a separate function that actually prints those strings to the receipt, but you can test the first one. You can read the unit test for the library that I provide. It gives you some insight in how I do some testing for these things, might give you some ideas for what you want to do in your code.

So after this module, once you get this done, we’re going to switch over to doing web interface. So those next milestones are going to be much smaller and give you more time to work on your final project as we get toward the end of the semester. So hopefully everything’s going well. Hopefully you’re able to get your credit cards and cash checkouts to work and are just as happy as the Target Lady. As always, if you have any questions, let me know. Otherwise, best of luck this week and I will see you again next week.

Fall '25 Week 12

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 12 announcements video for CC410 in fall 2025. So, this week, as promised, we are shifting gears a little bit away from our traditional graphical interface in the restaurant project, and now we’re moving to a web-based interface. So, this week is pretty light. We just have a quick example showing you how to add a web framework to your project. You’re going to do that for the restaurant milestone. It’s pretty simple. Right now, we’re just going to focus on making a menu. It’s not going to be interactive or anything. It’s just going to be data generated. So, hopefully, this project goes pretty quick, and then it will give you some time to work on your final project. Don’t forget we’re on week 12 of 16. So you really have four, maybe five weeks if you include the final, the fall break to work on your final project. So I encourage you to get started on that if you haven’t already.

So like I said, for Milestone 10, you’re going to install a web framework into your project. You’re going to do some work to set up routes and a controller in your project. You’re going to learn how to set up some layout templates and how to do template inheritance. And then you’re going to build a menu that is fully data-driven for the project itself. After that, we’re going to have a few more milestones on adding some form data and filtering and serialization so that we can do some more interactive stuff with our web app.

From here on out, the milestones are going to be hopefully quite a bit smaller than what you’ve been doing for the restaurant project up to this point. And it’s really meant to give you more final project time. And then the big thing to keep in mind is the last restaurant milestone is going to be due at the end of finals week. So make sure you’re keeping that on your schedule. Also, hopefully you’ve seen the note, we have one fewer day to get grades posted. Grades this week, or this year are due the Monday after finals week, not the Tuesday after finals week, which means that I’m going to have to be really particular about everything’s got to be in the Friday of Finals week. So I have enough time to get it graded, in time to get stuff posted. I’m teaching three classes this semester, so I really, really need to have everything in on time. So make sure you’re keeping an eye on that as well.

So quick, we’re headed to the World Wide Web. I hope this milestone gives you a quick break out of all the stuff we’ve been doing with the user interface. As always, if you have any questions, let me know. Otherwise, best of luck, and I will see you again next week.

Fall '25 Week 13

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week 13 announcements video for CC410 in fall 2025. So, this week you should be doing another restaurant milestone. We’re going to focus on building a RESTful API and using it to accept some form data to create a custom item that we can add to our menu. So, do a quick example of how to accept form data to edit some items on the movie project. And then you’ll add a form to your restaurant project to add a custom item to the menu. And then, of course, the big thing you should be doing is working on your final project. These web milestones are meant to be a lot shorter and more compact so that you have more time to be working on your final project, which is going to be due by the end of finals week.

So, like I said, milestone 11 is all about adding web forms to do searching and presenting results. So make sure you’re getting that. And then we’ll also add some custom items to the menu here in the next milestone after this one. So looking ahead, we’re going to add some more RESTful controllers and serialization to our project. And again, just big reminder, keep working on your final project. If you have any questions or concerns on that project, please let me know. I’d be more than willing to help with that.

So we’re looking forward to the end of the semester. We’re almost there. Hopefully everything is going well. Don’t forget next week is fall break. I’m sure everybody’s looking forward to it. And then we have two weeks and then finals after we get back. So you’ve got a little bit more time to work on everything. As always, if you have questions, let me know. Otherwise, best of luck and I will see you again next week.

Fall '25 Week 14

YouTube Video

Resources

Edited Transcript

Good morning and welcome to your week 14 announcements video for CC410 in fall 2025. Hopefully everybody had a good Thanksgiving break and is ready to get these last couple of weeks of the semester out of the way. So this week you’re going to have a final project check-in. This is our last big check-in before your final project is due. Mainly it’s just a chance for me to chat with you, make sure everything’s going well on your final project, and answer any questions you have about getting it wrapped up before the end of the semester. We also have the second concept quiz in this class. This is just to check that you’re understanding some of our object-oriented concepts and things like that. Once again, a reminder on these concept quiz, they’re open book, open notes, but please don’t use AI for these. I really want to see exactly what your understanding is of these concepts. And it’s a really good check to make sure you’re understanding exactly what we’re doing in this class. And then you’re going to be working on a restaurant milestone where we’re going to add a RESTful API and we’re going to add a quick little form to add custom items to the menu. You’re not going to edit the menu itself. You’re just going to add custom items to that menu. And then of course, I want you to keep working on the final project.

So like I said, for Milestone 12, we’re going to build a RESTful web application. We’re going to create some custom menu items, and it’s going to reinforce some of those design patterns that we came through earlier this semester, like the iterator pattern and the singleton pattern. And this will also be the last time that you’re going to update the UML diagram for your project. Again, you can just do a web-focused UML diagram. You don’t have to include all of the data stuff and all the GUI stuff. I really just want to see a quick UML for the web that kind of links to other parts of your project. And then next week, we’re going to have one more restaurant milestone that’s on validation and serialization. It’s a very small milestone that just adds a few more features to what we’re doing in this custom items. And then you’ll be continuing to work on your final project through that week and into the final of the semester.

So then after that, there is a textbook extras quiz that’s due on finals week. It’s just a short quiz of things that I couldn’t get into the textbook elsewhere. Your final project is due on Friday the 19th. So make sure you’re watching for that and I will talk about that in just a second. And then the other quick reminder is I’ve seen that several students have submitted things very early. If you want to get those graded early before the deadline, you just have to email me and let me know. And then I will go through and grade anything that you’ve submitted that you want me to grade early. That way you know where you’re at on the final project. So don’t be afraid to email me if you’ve got anything already submitted that you want me to grade before the deadline. That also helps me out because I can get a little caught up on grading before we hit finals week and make sure that your grade is up to date.

So for the final project in this class, just like a lot of the milestones, you’re going to do pretty much the same thing. You’re going to make a release tag on GitHub. Make sure you go back and read the requirements page for the final project. The final project is more of a completion project. It has several things. I want you to hit most of them, but it’s really just kind of meet those requirements as best you can. Your code should have some inline documentation comments. It should have a README. You may also create some quick user documentation for how to use your project. That would be really helpful. And then you will give a final presentation for this class. You don’t have to do a write-up other than the README, but you do have to do a presentation. So the presentation should be around 15 to 20 minutes. It’s mostly just going through your code and going through your project. You have two options to give your presentation. You can either pre-record the presentation using Zoom or whatever tools you want to use and then send it to me, or you can present it live via Zoom to me anytime that I’m available for scheduling.

However, if you either pre-record it or present it live, you need to have some time for Q & A. So if you do pre-record your presentation, you have to submit it to me sometime before you schedule time for your Q & A. So if you schedule your Q & A on Friday, you need to send me the video at least a little bit ahead of that so I can have watched your video by the time we get to the time for Q & A. If you’re going to present live, obviously we’ll just do Q & A right after your presentation. Also, please be aware that I’m only available for these presentations Monday, Tuesday, and Friday of Finals Week. And generally, my Friday gets filled up pretty quickly. So if you want to meet with me, grab a time on my calendar or on my meet time, anytime on Monday, Tuesday, or Friday of Finals Week to do your Q & A time. But just remember, if you’re going to pre-record your video, you have to submit it so that I can watch it before we do Q & A. I don’t give a real deadline on that. I will try and catch videos pretty quickly, but just make sure you have it scheduled in time. And then also bear in mind, the end of the semester is December 19th. I cannot extend this deadline past that because grades are due Monday, and there’s no way I’m going to get everything graded if I extend those deadlines. So you absolutely have to have everything done Friday the 19th. Get it in, get it turned in. And remember, for any time, any Q & A’s or anything like that, my workday ends at five o’clock. So even though you might be able to turn stuff in at midnight, for some of this, you need to get it done so you can schedule your things before the end of the workday on Friday.

So last big thing in your presentation, suggest an outline. These are just some things I want you to hit in your presentation. Give me a little background on your project. Talk about where it came from, why you went with that idea. Talk me through your implementation, what the structure of your project is. You might show a UML diagram. You might pull up your code and poke around in it for a little bit. Then I want you to evaluate how well your project met your expectations. Were you able to do everything you wanted to do? Was there different problems that you ran into? Things like that. Then of course, there’s talk about your future work. What would you want to do if you could continue working on this project? And then, of course, the big thing at the end is give me a demo. Pull up your project, walk me through it, make sure it works. Like I said, again, your presentation should be about 15 to 20 minutes. It does not have to be that long or in-depth, but I just want you to talk me through your project and show me that it works.

So we’re getting close to the end of the semester. Hopefully you’re not freaking out too bad. Things seem to be going good from my perspective of things. So I’d say just keep up the great work and let me know. You can expect probably one more announcement next week of any wrap-up stuff and talking about things like T-Vals. You’ll get emails about T-Vals toward the end of the semester, but hopefully this gets you most everything you need to get through the end of the semester. As always, if you have questions, let me know. Otherwise, best of luck, and I will see you again next week.

Fall '25 Week 15

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 15 announcements video for CC410 in fall 2025. So we’re almost there at the end of the semester. Hopefully things are going well. This week you’ll be working on a project about validation and serialization of the data that we collect using our RESTful forms that you created the previous week. These milestones are pretty short and sweet. They’re just kind of straightforward ways that we can add some additional functionality to our web project. And then the big thing is to keep working on your final project this week and into finals week so that you can get that done.

So for the rest of the semester, all there really is is a textbook extras quiz. These are just things that I couldn’t get into the course anywhere else. So it’s just a quiz. There is no example or project to go with it. And then by the 19th of December, you’ll need to get your final project submitted and presented. And I’m going to talk about that next.

So for your final project, remember the big deliverables are to create a release tag on GitHub, just like we’ve been doing for the whole class. Make sure you read the requirements page for the final project. The final project is graded mostly on a completion basis where I want to just see that you hit most of the requirements in the final project. You don’t have to hit every single requirement to get a full credit for this, but we want to hit most of them. We want to see your code documentation. We want to see it structured with the same structure that we’ve seen for the prior projects. So things like linting, things like code commenting, things like type checking. All of those should be in your final project, just like we did for the restaurant project. You may also want to write up a quick readme or user documentation for how to use your project. And then, of course, you’re going to be giving your final presentation.

So the presentation itself should be about 15 to 20 minutes. You can either pre-record a video or present it live. Either way, either if you pre-record a video or you present it live, you need to meet with me for Q & A. And your Q & A needs to be scheduled after I’ve had time to watch your video or right after your presentation. Best times for this are Monday, Tuesday, and Friday of Finals Week. Wednesday and Thursday of Finals Week, I am completely tied up with computer science final projects. You can go ahead and schedule your Q & A time now and reserve your time on my schedule whenever it’s most convenient for you, but make sure you have your video done and submitted to me well before that so I have a chance to watch that video before your Q & A time. If you miss your Q & A, it will definitely hurt your final grade in this class.

So finally, for your final presentation, here’s just kind of a suggested outline that you might want to go through. Give a little background about why you chose this project and why it’s interesting to you. Talk about your implementation, how you built it, how you adapted what we did in the restaurant project to meet this. You can even pull up some code and talk through your code. Give a quick evaluation of how well you think your project meets the goals that you had for this project. Talk about any future work you would do if you could keep working on this project. And then, of course, give me a demo of the project running itself.

Last big thing for the semester, teaching evaluation or TEVALs. Those are available now. You should have gotten an email this morning for those. Remember that the TEVALs at K-State are completely anonymous. I don’t get to see anything about you. I just get to see the feedback that you leave. It’s also delayed. I cannot see any of the TEVALs until I have final grades submitted for this class. So please, please take the time, fill out the teaching evaluation. Any and all constructive feedback is welcome. I really do want to hear from you about your experiences in this class, how things went, how things could be improved over time. I honestly look at every single one of these and I consider every single comment I get. So please take some time to fill out these TEVALs with all of your honest and constructive feedback, all of that is greatly, greatly welcomed. So we’re at the finish line for the semester. This is the last video you’ll see of me. Hopefully things are going well. Best of luck as you finish up your final projects. And I look forward to seeing you all for your Q & A’s over the next couple weeks. Good luck.