Fall '24 Week 1

Resources

Edited Transcript

Hello and welcome to CC410. My name is Russell Feldhausen. My contact information is here on this slide. You can also find it on the syllabus and on the homepage on Canvas. I will be your instructor for the semester in the CC410 advanced programming course. So in this course the big picture is we’re going to cover a lot of programming topics including object oriented programming, unit testing, design patterns. We’re going to learn about building graphical user interfaces, web interfaces, and we’ll do some work with serialization. The way we’re going to do this is a lot of guided example projects where I will have longer form like 45 minute to an hour long videos where I do a smaller example of what you’re working on and then you’ll actually apply that by building out this point of sale system for a restaurant project. So you’ll do several milestones of this restaurant project and then throughout the semester you’ll also be thinking about and planning a final project that you’ll probably spend about the last four weeks of class working on but we’ll spend the whole semester actually thinking about it planning it and maybe getting some of the framework in place as you work on the restaurant project as well.

So in this course we’re going to introduce a lot of new technologies such as Git and GitHub classroom to keep track of our source code. We’re going to use build automation tools like Gradle in Java and Tox in Python. We’re going to introduce type checking in Python if you haven’t done type checking in Python before. We’ll do unit testing in both languages. We’re also going to do some style checking in both languages and we’re going to learn how to properly document our code and use documentation tools to actually build a documentation site for our projects as well. So in this course there is a final project you get to choose the topic it’s really the first time that we cut you loose in the computational core program to choose a topic. I generally recommend aligning the topic with your own interests and ideas and also trying to align the planned structure of the topic with the restaurant project itself. In general you want to keep the project pretty relevant to what we do in the class so for example you’re not really allowed to use to do like a video game or a web app for this project. It doesn’t really fit with what we’re doing in advanced programming But if you’re interested we can work with your ideas to try and align it to what fits in this class So you’ll come up with some ideas here in the first few weeks of the semester We’ll meet and kind of discuss the scope and scale of your project And then you’ll work on about four milestones for the final project throughout the semester and at the very end of the semester You’ll put together a short video presentation to present it to myself and the rest of the class

So this first week of the class is a bunch of administrative stuff just to get you going And then we have our first example project, which I like to call the hello real world example This is a hello world project if it was built following some more industry standards for coding It gets you experience working with the build automation tools unit testing documentation tools style checking tools All of the stuff we use in this class to build a hello world program I think it’s a pretty cool project just to get started with You’re also going to schedule your first final project meeting with me. All you have to do is schedule a time on Calendly to meet with me for about 15 minutes. We’ll just talk about the final project, answer any questions, and it’s a good chance for us to meet virtually for the first time just to chat if there are any questions you have about the class. Don’t forget, I do have office hours for this class. In general, office hours for this class are going to be by appointment only. I only have three students this semester, so I think it’ll be much easier if you just schedule times to meet with me instead of me having open office hours. The other thing that I’ll talk about is communication platforms. In this class, we use the Ed discussion tool, which is kind of a forum discussion tool that allows you to post questions and get feedback. The introduction assignment is held on Ed discussion, so everybody should have access to it and post there at least once. I also use the computer science discord server and Microsoft Teams, so you can chat with me there. And as always, there is a help address, the cc410 help email address is available if you have any questions there. So that’s the first week.

Second week of class, we dive right in, we build an object -oriented class library for our restaurant project to represent the items on the menu, so that becomes our first restaurant milestone. This project alone is about 2 ,000 to 2 ,500 lines of code depending on how you build it, so it’s already an order of magnitude larger than any project that you worked on. However, a lot of it is boilerplate code that you can copy paste, so I tell you to be very thoughtful about how you build this code, maybe build one class and then copy paste it and tweak it instead of building everything from scratch. I do totally allow copy pasting between your own code in this class. If you want to use any other resources, you’re welcome to do that as long as you clearly cite them and make sure that you’re not using those other resources to actually write your code. But for example, if you need to refer to a third -party tool to figure out how to sort something or how to build something, that’s fine, just kind of cite where you got it. I do not recommend using any AI tools like GitHub Copilot or Chat GPT or anything like that in this class. It generally produces very bad code. And it’s very poorly structured code and it’s very obvious that it’s generated using those tools because it doesn’t follow our coding standards So I don’t recommend using those But if you do use any external resources, please cite them and comment them so that I know where they’re at

Week three in this class. We’re introducing documentation and unit testing We’ll do the second restaurant milestone and because we’re adding unit testing it about doubles the size of the project to 4 ,000 lines of code My module solution for an older semester was about 423 individual unit tests So again, it’s an awful lot of code, but it’s many many repeats So again, be very careful about how you write your code and think about how you can reuse things Because even though there’s many many thousands of lines of code it’s all kind of repetitive and so there are ways that you can build it very efficiently and The hopeful thing with week three is that you catch any errors that you made by building your stuff on week two And we’ll talk about that when we get there

So then we go to weeks four and five where we introduce inheritance and polymorphism. It’s something you may have seen earlier in CC210 and maybe again in 310, but we’re going to hit it really deeply in this class to talk about it. This one, we’re going to refactor our old code in the restaurant milestone. It’s going to be about a thousand lines of code that gets changed, and it drastically simplifies the structure of the project. I have found that this is really the activity that helps really reinforce what inheritance and polymorphism does in your code by refactoring old code to be better structured. And so by the end of week five, you’re also going to schedule your second final project milestone and we’ll already be at the end of September and looking forward to October by the end of week five. Then beyond that, we’ll start introducing graphical user interfaces or GUIs. We’ll introduce web external libraries, serialization, so much more. There’s a lot of content in this course.

So last semester, I made some big changes to this course that involves splitting some milestones, moving some content around, making it more streamlined. I think that went really well last semester, so I’m going to leave it as is. Most of the changes start with module six. So if you notice any dip in quality or any restructuring of the course, it’s going to start around module six. I think it makes the course much more streamlined. But if you have any questions or content, just let me know. So some small updates as well. I updated the Codeo stack last semester. So we’re now running Ubuntu 22 with Java 11 and Python 3 .10. A lot of the example projects were written using Java 8 and Python 3 .6. In general, you shouldn’t have to change much, except a couple of version numbers, either in your Gradle file or in your Tox file. It should be pretty obvious. And a lot of times in the examples, I put a little reminder above the video that says what you need to change. The examples are being reviewed and tested. I may not exactly get them all updated this semester. So if you’re running any weird stuff with the examples, let me know. For example, a lot of the example starter code, you may just have to change one line in the Gradle file or the Tox file to update the Python version, and then it will work just fine.

So some advice for this course. This is a 4 credit hour college course. Four credit hours means we expect you to spend around 12 hours each week working on this course. That involves reading, watching the videos, working on the example project, working on the restaurant milestones, working on the final project milestones. 12 hours a week is quite a commitment for a four credit hour course, but it is what we expect. The best advice I can give you in this course is to schedule your time wisely and make sure that you are setting aside enough time to work on this course and also make sure you start early on the projects. Each project milestone you’ve got a week to work on. In general, the students that do not do well in this course are the ones that wait until the Saturday or Sunday before a module is due on Tuesday or Monday whenever I have modules due and they start on Saturday. They don’t have time to ask questions because I’m not working over the weekend and then they get behind and then they maybe lose 30 or 40 percent on late penalties due to the milestones being late. So start early, ask questions, take advantage of that help because it’s there for a reason. Likewise, if you get stuck or have problems, ask questions. In this course, if you get stuck and you find that you’re spinning your wheels for more than about half hour or so, that’s a really good opportunity to take a step back, ask questions, get feedback, and get back to it after that. Don’t sit there and spin your wheels for six hours and don’t make any progress because that just makes you frustrated. It wastes your time, it wastes my time. Just take a step back and ask questions.

Likewise, I talked about in this course, you’re allowed to copy paste between your code, especially in building out these first couple of milestones, there’s a lot of boilerplate code that you can copy paste and then do find and replace on to work. Make sure you’re doing that really carefully. If you have something wrong in the first piece of code, if you copy paste in 15 places, it’s really, really fun to go back and fix all of those. So be a little careful how you do that. Likewise, you’re going to have access to Git and GitHub classroom. Git is basically your autosave feature for working on code. If you’re a video game player, you know exactly what I mean. So I tell everybody commit to Git often. If you commit to Git and then you screw something up, you can roll back to your last commit, you can undo a commit. If you look in the documentation for Git, you can branch and so you can have different branches of things working. Take advantage of that tool. A lot of times students that don’t do well in this class, they commit to Git once per milestone and they just commit everything in one shot. And then halfway through a milestone, they’ll break something and they will wish that they weren’t doing that. So make sure you commit to Git frequently anytime you get something working, so you can roll back to it if you need to. And then finally, as I talked about earlier, you’re welcome to use online resources in this class. However, please make sure you cite them. If I see something that does not look like your code and it’s not cited, I probably will ask you questions about it and I may deal with that as an honor violation if you’re not citing your sources. Likewise, like I said before, I do not recommend using any sort of AI tools in this class. They are not helpful, they are not useful, at least for this outcome because I really want you to learn proper coding structure and technique on your own without relying on it. on these other tools. It’s like learning how to spell without spell check. It makes you a better speller by going through the motions and doing it yourself a few times before you turn on those tools.

So that’s all I’ve got for this first week. Generally I’ll post an announcements video like this about every week every other week. These videos are completely unscripted except for the slides so you’re going to see a little bit different version of me in these announcement videos than you do in the rest of the class. These are recorded live in the semester. I usually do them on Tuesday mornings. So feel free to keep in touch. Watch these announcements videos as they come out. You can post an ed discussion. You can contact me on Discord or Microsoft Teams. You can attend Tea Time office hours held through the computer science department. Those are online every Monday afternoon at one o ‘clock. We meet for about an hour on Zoom and in person. It’s a great time to just chat about life universe and everything. If you want an access to that and you don’t have the link for it just let me know and I’ll send it to you. And then you can also schedule one -on -one office hours with me anytime using Calendly. I’ve only got three students enrolled in this course, so I should have plenty of time to spend with each of you one -on -one if you have any questions or concerns in this class. So don’t be afraid to take advantage of that. I’m always happy to help. Other than that, good luck this semester. I’m rooting for you. This is a tough class, but I know you can do it. If you have any questions or concerns, feel free to reach out and let me know. Otherwise, best luck this semester, and I will see you in the next announcements video.