Spring '25 Week 1
YouTube VideoResources
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.