Subsections of Weekly Updates

Spring '26 Week 1

YouTube Video

Resources

Edited Transcript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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