Fall '23 Week 1

Ed Discussion

This video was recorded before I decided to switch to Ed Discussion instead of Discord. So, any mentions of “Discord” in this video can be replaced with “Ed Discussion” instead. Sorry for the confusion! - Russ

Resources

Edited Transcript

Hello, and welcome to the week one Announcements video for CC 410 in fall 2023, welcome to the class. My name is Russ Feldhausen. I’ll be your instructor for the semester, my contact information is here, you’ll also find it on the syllabus, you’ll find it on the intro video that I just got done recording. If you have any questions at all, please feel free to reach out to me. anytime throughout this class, I’m happy to help. So big picture in this class, we’re going to be doing a lot of work with object oriented programming, we’re going to spend some time doing testing, we’re going to work on design patterns, these are all things that you should know how to use, if you’re going to be a good programmer out in the industry. We’re also going to introduce some new topics and things we haven’t worked with before in this program such as user interfaces, working with web interfaces and doing some serialization. And to learn all of this, we’ve got a lot of interactive examples. Almost every project in this class has about an hour long example, where I sit down and do a live coding demonstration of exactly what you’re trying to work on in a smaller scale, so that you can then follow that example to do the restaurant project. Throughout this semester, we’re going to do a project that has about 11 milestones in it that builds a point of sale interface for a fictional restaurant. And that interface will eventually include both a desktop user interface and a web user interface.

At the same time, you’ll also be thinking about a final project. And so at the end of the semester, you will do your own final project. The final project is about a third or a quarter of the scope of the restaurant project, it’s the restaurant projects is pretty good sized. Your final project will be smaller version of kind of the same idea. But it’s up to you to decide exactly what you want to do with your final project. And you’ll get some chances to meet with me throughout the semester to talk about your final project and see how things are going there. This class is also going to introduce a lot of new technologies. First and foremost, you’re going to work with Git and GitHub classroom to submit all your assignments. This is a tool that’s used a lot by professional programmers, so it’s really worth your time to get used to it now. We’ll also work with some build automation tools such as Gradle for Java and talks for Python. This helps automate a lot of the work of building and actually running your code, we’re going to introduce type checking. This is important in Python. If you haven’t done any type checking in Python before it helps you write better Python code, we’re going introduce unit testing, which is commonly used to actually test software in the real world, we’re going to enforce a coding style. And so we’re going to use a style checker to make sure all of our code matches a defined style. And we’re also going to learn how to write documentation for our code so that other developers can come in and learn how to read and write our code. So like I said, final project, you get to choose the topic, we want it to align with your interests. But we also want it to kind of follow the scope and scale of the class, it’s a chance for you to learn some new skills. And eventually at the end of the semester, you will do a presentation, I’m still kind of figuring out the presentation part, we may have you do a recorded video, or you can do a live presentation via zoom, we’ll get that figured out toward the end of the semester. This is really the first time that you get to turn yourself loose and work on a project that is of your own choosing, that meets the requirements for the class. And like I said, there’s some milestones throughout the semester that involve a short meeting with me via zoom, just we can chat about your final project and make sure that things are going well.

So this first week is mainly the administrative stuff. It just gives you a lot of background on the class, we’re also going to do a project called Hello real world, which is a redo of the classic Hello World project. But this time, it’s how you would do it in the real world. It’s got coding style, it’s got unit tests, it’s got a lot of stuff in it, that is going to be new. But it’s fun to do with a real world. So you get to see a lot of that. The other big thing I want you to do is make sure you can find the class channel on Discord and introduce yourself there, we’re going to at least use discord at first, I actually just got a license for a new software for discussion boards. And so I may switch everything from discord over to that here the first week of class, we’re still kind of figuring out exactly what we want to do with that as a department. So watch for an announcement for me soon. If I decide to make that change. Then you get into week two, you’ll spend some time working on a class library for the restaurant milestone, that class library ends up being about 2000 to 2500 lines of code. A lot of that code is boilerplate and repetitive. So the big key for week two is try and work smarter, not harder. Don’t sit there and try and type everything out by hand but build one of those classes, and then see what you can copy paste and what you have to change between the classes as you go. The next week is week three, we’ll spend some time adding unit testing and documentation to that project that balloons our project over 4000 lines of code. This has many repeats, I have a lot of unit tests, my model solution had 423 You’ll have more or less depending on how you implement them. But again, this is really training you not only how to write really complex code, but how to deduplicate code and how to work smarter and use that code to your advantage. Then we’ll spend some The time introducing inheritance and polymorphism, again refactoring some of our code. And then beyond that, we’ll spend some time talking about design patterns and serialization webs and GUIs, and all sorts of stuff throughout this class.

So, last spring, I did a big change to this course, I split a few of the larger milestones into smaller milestones, I move some content around to try and maybe organize the class a little bit better. I think it’s more streamlined. Now. There were some hiccups. I think I’ve gotten through with that all of these changes start at module six, I’m going to leave it the same way this semester. But if you notice a dip in quality after module six, that’s probably because I reorganized stuff. And I still haven’t found all the bugs yet. So please bear with me, if you do find bugs, submit them. To me, there’s that bug bounty extra credit assignment that you can get points for. So don’t be afraid to use that. There’s also been some small updates, I updated the Codio stack behind the scenes. So we’ve got the latest versions of Ubuntu, Java and Python. We’re using Java 11, which I recognize is an older version, but it’s a very compatible version. Right now we’re using python three point 10, which is a well supported version of Python. I’ve been going through and updating most of the examples, you’ll notice a lot of my examples, use Java eight, and Python 3.6, the concepts are all the same, you may just have to translate a little bit of code or change a couple of commands to match everything that’s going on. But I’m probably not going to rerecord those example videos right now. So you just have to mentally keep in your mind what version of things you’re working with.

So some big advice for this class. This is a four credit hour college class four credit hours means we expect 12 hours each week, in a normal college class you would spend for those hours in class listening to lectures. So definitely try and budget your time in this class to make sure that you have at least 12 hours each week, I really encourage you to schedule your time wisely and take advantage of it. Now. Block out some big blocks of time in your schedule to make sure you have time to work on this class. Like every other programming class, you should start your projects very, very early. Work on them for several days, that leaves you time to ask for questions. The number one reason that students struggle in this class is if an assignment is due on on Monday, and you start working on it on Saturday, you’re going to have a bad time. It’s really, really hard to do these assignments on a weekend. And then you come back on Monday. And you’re waiting for me to answer a question. And I might be in meetings all day Monday, and it just doesn’t work out. So start early. Leave yourself time to ask questions and get help. Don’t be afraid to ask questions and get feedback. Just like any other programming course, I don’t expect you to learn everything just by reading it. So feel free to ask questions, quiz me on things that you want to know more about, ask for more resources, use me as a really good resource to help you learn the content. Another big thing is this class, you definitely are allowed to copy paste code between files, you can totally do that. However, please do so carefully. A lot of students have broken their code by copy pasting entire files and not carefully making the changes they need. I’m not going to be your debugger necessarily. So please be careful when you copy paste stuff. Don’t forget to commit to get frequently one of the things that you can do. If you have one of those copy paste errors. If you’ve been committing to get frequently like you should be, you can just roll back to a previous commit and try again. Generally, anytime you get something working, you get done with a topic or anything like that, commit and push to get so that you’ve got it. Good students in this class, I’ll see 10 or 15 commits per project. students that struggle in this class, I’ll see one to two commits per in Git. So it’s really worth your time to take the time and commit to get the last big thing in this class, you can use online resources. However, I really encourage you to stay away from tools like GPT, not because they aren’t good, but because they can do so much of the heavy lifting for you in this class. And then you don’t actually learn the content well enough. It’s one of the things that it will help you get a good grade now. And it will make it harder for you to be successful in the workforce later on. I’d really really much rather you take the time now to learn it well, so that when you get into the workforce, you understand what you’re actually doing. I have gone through check GPT, you can totally do the first projects in this class and check GPT had got about an 85% on it. So it’s totally possible. Please don’t do that. It’s really worth your time to take the time and learn how to do this yourself so that you’ll be a good programmer out there.

So that’s really all I got for this first week. future weeks the Announcements video will probably be a little bit shorter, but I wanted to go through a lot of stuff this time informally. If you have any questions keep in touch with me. We’ve got discussions on Discord. I’ll be watching for your introduction posts there. I host Tea Time office hours, which are on campus Mondays at 11 o’clock. They’ll also be available on Zoom. You’ll see information about that coming up shortly. And then of course, you can always schedule a one on one office hours with me using my Calendly link. I’m more than happy to meet with you during the week via zoom and chat with you if you have any questions. You’ll also have a few checkpoints for your final project. So you’ll meet with me at least four or five times throughout the semester for that. So hopefully everything goes well. I’m rooting for you. I hopefully this is a really good semester for Are you if you have any questions or concerns or anything let me know otherwise best of luck in this first week of class and I will see you again next week