Spring '24 Week 1


Edited Transcript

Hello and welcome to the week one announcements video for CC410 in spring 2024. My name is Russ Feldhausen. I’ll be your instructor for this semester. My contact information can be found here. It’s easiest to get a hold of me by emailing me at russfeld AT ksu DOT edu. There’s also my website. I’m on the Discord server. I’m pretty easy to get a hold of, so feel free to reach out to me anytime you have questions.

In this class, the big picture is we’re going to take everything that you’ve learned about programming and we’re going to go bigger. We’re going to introduce you to things that you’re going to see out there in the real world, in industry, some of the bigger, more technical things that you’re going to do in programming. For example, we’re going to spend some time talking about object -oriented programming fundamentals, but this time we’re going to look at them from a much bigger, broader picture of how we use that to build complicated software. We’re going to talk about writing unit tests and how do we actually develop tests for our software to make sure it works correctly. We’re going to talk about design patterns, how we can use commonly accepted solutions for common problems in programming to make our code easier to read and understand for anybody. Then we’re going to switch and add some new content, talking about graphical user interfaces or GUIs. We’ll talk about web interfaces, things like serialization. To do that, we’re going to go through a lot of example projects where I’m going to kind of walk you through a coded example. Usually those videos are about an hour long or so, but you really get to see me going through all the examples of how you would do this in the small scale, and then you’re going to implement it in the larger scale using a restaurant project. We’re going to go through a project that basically builds a point of sale system for a fictional restaurant, and we’re going to do about 11 different milestones on that project. Throughout the semester, you’re going to build this large -scale programming project that lets you put all of these things into practice. Then finally, toward the end of the semester, you’re also going to do a self -directed final project. It will be similar in structure to the restaurant project, but about one fourth of the actual scale.

To do this, in this class, we’re going to introduce a lot of new technologies. First and foremost, we’re going to introduce you to Git, which is a version control system for code. We’re also going to use GitHub Classroom to manage some of our assignments and how you’re going to submit that code. We’re going to use some automation tools, such as Gradle and TOX, to make building, compiling, and running our programs a lot easier, as well as automatically running things like type checking and unit testing. In Python specifically, we’re going to introduce type checking, which is something that is part of Java as the compiler step, but in Python, it’s something you haven’t seen before. We’re going to introduce unit testing, we’re going to introduce a coding style and a style checker to enforce that, and then we’re also going to introduce documentation for our code and how we can build that documentation automatically and make that available at the end. So in this course, there will be a final project that you’ll work on. You get to choose the topic, and we want it to align with your interests in the class. But we once should also be able to use your new skills. And so you’ll get to pick a final project, you’ll work with me to discuss the scope. There are four milestones for your final project. The first one is actually about the second or third week of class. And those milestones are basically opportunities for you to meet with me to talk about the class, your final project, anything that’s going on. And then at the end of the semester, you’ll give a presentation. Typically I do those as just one -on -one presentations, but sometimes we might try and actually set it up where you can present as a group to the class.

So this first week of the class is mostly just administrative stuff, but we also go through a project called the Hello, Real World Project. Hello, Real World is basically redoing the classic Hello, World Project, but in the style of how we’re going to do the rest of the stuff in this course. So it lets you get used to the development environment and some of the tools you’re going to be using. It’s all very hands -on, it’s just the video that you watch and go through on your own. You’ll also want to schedule your first final project meeting either this week or next week. And you’ll learn about things like the office hours, communication platforms, and you’re going to do a quick introduction to yourself on the Ed discussion platform, so that we can get to know a little bit about each other and who you are.

For the second week in this course, we’re going to build an object -oriented class library for our restaurant project. This is probably the larger milestone that you’re going to do throughout the semester. It’s about 2 ,000 to 2 ,500 lines of code, but a lot of it is mostly boilerplate code. So you can be kind of thoughtful about how you approach this project. And if you get one file working, you may be able to copy -paste a lot of that code into multiple files and slightly adapt it to make it easier to work with. Then in week three, we’re going to switch over and do some unit testing and documentation of that code. This is a very large milestone where it’s about 3 ,500 to 4 ,000 lines of code. And at least in my model solution, I had 423 unit tests, but many of them are repeats. You may have more or less, depending on how you approach your unit testing. But the whole goal of this milestone is to catch errors in your second week milestone to make sure that all of your code is correct before we move on.

Then in weeks four and five, we’re going to introduce inherited code. and polymorphism and add some more object -oriented structure to our code. A lot of this is refactoring our existing code, so there’s only about a thousand new lines of code, but it really simplifies our project structure, and I think it really highlights the importance of following the object -oriented programming paradigm instead of just going ahead with what we think might actually be the best structure. Then beyond that, we’ll introduce things such as design patterns, user interfaces, libraries, web, etc. In this class, I made some big changes about a year ago. I split some of the larger milestones. I moved some content around. I think it’s a lot more streamlined now. I think we’ve gotten through most of the hiccups. A lot of these changes start with module 6, so if you notice kind of a change in structure or scope at module 6, that’s what’s happening. There’s also some small updates. I made some updates last fall that seem to be carrying through OK. Most of these are just technical updates, so you don’t really have to worry about those.

My best advice for this class is that this is a four credit hour course, which means that it expects about 12 or more hours each week of your time. This is across doing the readings, doing the example projects, doing the milestones, working on your final project, etc. Most students who succeeded this course do spend about 12 hours per week on it. We can track that through CodeO and some of the other tools that we use. So I really encourage you to take some time now to schedule your time wisely throughout the semester. There is a time management guide that I’ve added to this course that you can fill out. So schedule your time, make sure you have at least 12 hours per week set aside for this course. And then the other big thing is start early on the examples and milestones and leave time for questions. The number one reason that students fail in this course is they don’t start the milestones until the day it’s due, they run into problems, it takes time to get answers, they get behind, and it just continues. So start early, get feedback, ask questions. The other big thing is in this course we do allow you to copy paste between your files, but you should do so carefully. If you copy paste a whole file, sometimes you’ll spend more time debugging it versus if you were just carefully rewriting it from scratch. And then of course we’ve introduced you to the get tool. So make sure you use get frequently. The whole joke among programmers is to commit early, commit often, and make sure that if you make a mistake you can always roll back to a previous commit. That’s also really important. And then finally make sure you use and cite any online resources properly. You are not allowed to use some AI code generation tools in this course. Make sure you read the syllabus very carefully, but you can refer to online resources and tutorials. If you use any code or are inspired by any code there, make sure you cite that in your comments. If I find code that I think is not yours, I will look into it and that could be a honor code violation. So when in doubt, use it, cite it, and then let me know or ask me about it before you turn it in and I will let you know how I feel about it.

Other than that, there’s lots of ways you can keep in touch with me this semester. We’ve got the Ed discussion board, that you’ll introduce yourself on. I’m on the CS Discord server. If you’re not there, you can join it at discordbot .cs .ks2 .edu. I host T -time office hours. I think they’re going to be every Monday again. We haven’t set a schedule yet, but I’ll post that as soon as we know. And then of course you can use my Calendly link to schedule one -on -one office hours with me. You’ll do that at least five times throughout the semester for your final project, but you can do that anytime you have any questions. I’m always available to help. So I’m rooting for you. This is a really tough course, but I know you can do it. So good luck this semester. If you have any questions, let me know. Otherwise, I will try and post a weekly announcements video roughly every week. Sometimes I’ll have to skip a week because I’ll be out of town and I’ll post a text announcements, but I’ll try and keep up with weekly announcement videos like this. So watch for these every Monday or Tuesday in your Canvas. Best of luck to you this semester, and I will look forward to seeing you again soon.