Weekly Updates
Information for Current Students!
Information for Current Students!
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.
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.
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.