Fall '21 Week 1
Resources
Edited Transcript
Hello, and welcome to the week one announcements video for CC 410 in Fall 2021. My name is Russell Feldhausen. And I’ll be your instructor this semester. My contact information is here on the screen, you can also find it on the syllabus, I’m email is by far my preferred communication method. In this course, there is a special course communication email that’s listed on the syllabus. I prefer that you use that when you contact me. But you can also contact me directly if you have any questions outside of the course. If you email me, I will guarantee a response within one working day. You can also reach me on Discord, I have a Calendly link that allows you to set up one on one office hours with me. So there’s lots of ways that we can get in contact.
So this is a relatively new course this is actually the third semester that we’ve taught it. This semester, I’m going through and doing a lot of work to clean up the content in the course. So the assignments are getting updated, we’re working on moving the textbook out of Codio and into a web platform that’s a little bit easier for us to maintain. I may also rework some of the examples. So the big takeaway from this is things may change, I will try and let you know as changes come. And I really, really welcome your feedback. If you have any thoughts on how I can make the course better or more accessible or more interesting, please let me know I’m always looking for ways to improve all of my courses. And where this is a new course, I’m especially looking for any information you have whatsoever.
So this course the big picture, we’re going to do a lot of advanced programming. This is meant to be a course to give you time to practice your programming skills, and really build from being a beginner programmer knowing some data structures to actually being able to build large useful programs. So in this course, we’re going to spend a lot of time learning about object oriented programming concepts, we’re going to work on building graphical user interfaces. And we’ll spend a little bit of time at the end looking at web interfaces as well. We’ll do lots of interactive examples. The examples all come with hour-long explainer videos where I walk through every step of the code and really talk through how I build it. Hopefully, that’s really useful for you. And then throughout the semester, you’ll do a large restaurant project, we’re going to build a point of sale system for a fictional restaurant. And then you’ll also be able to work on an independent final project to demonstrate your skills and do something of interest to you.
In this class, we’re going to explore a lot of new technologies that you haven’t seen before, we’re going to start off learning Git and using GitHub classroom to manage a lot of our code. We’ll use automation tools such as Gradle, and Tox to handle compilation and running a lot of the tests and things that we want to do in our code. For Python users, we’re going to add in type checking. So if you haven’t done any typing before, in Python, this will be really new to you. For Java users, we’ve been doing this already, so you don’t have to learn anything new here. But for Python, this will be kind of new. We’re also going to do some unit testing so that we can actually write tests to make sure our code is working correctly, we’ll learn how to check for style to make sure that our code is formatted and structured in a proper way. And we’ll learn how to write documentation comments in our code. So a lot of new technologies and ideas that we’re going to cover very, very quickly in this class.
In addition, like I said, there will be a final project, you get to choose the topic, I want you to align it with things you’re interested in. If you’re in the ICS program, you might want to align it with your major. Likewise, if you’re doing the CS certificate, you might want to align it with your outside major as well. I really want you to use your new skills in this class to build this project. But you’ll get to work with me interactively to discuss the scope and get some ideas and get some feedback on where to go. There are four milestones that you work on. And then the fifth milestone is presenting it to the class itself.
So right now we’re on week one week one is pretty simple. There’s just a lot of administrative stuff to go through. And then you’ll start working on the first example project, which is called Hello Real World. It’s a rework of the traditional Hello World project, but done in the style of this class using Git and GitHub, using unit tests and style checking, and all of the things that you really need to write professional code. Outside of that you can learn a lot on the syllabus about my office hours about communication platforms. The one thing I’d like to point out if you’ve gotten started in this class already, I forgot to publish the last assignment I added over the weekend, which is to introduce yourself on Discord. This class has a Discord channel that I’d like you to use. So is one of the assignments just to make sure you’re on Discord, I’ll have you introduce yourself on Discord and ask me a question. Since this is an online class case, the Global Campus really likes us to have communication platforms available. So that’s why we’re kind of making sure this is available for everyone as well.
So once you get past week one, week two, we’ll start working on object oriented programming. This will be the first restaurant milestone in my sample project. When I demoed all of this, it was about 2000 to 2500 lines of code in total. A lot of it is boilerplate. So once you get one of the entrees, or pizzas or sides or whatever taken care of, it’s going to be mostly copy pasting and changing it. But be really thoughtful about your naming and your style, because there’s a lot of things you can do in week two, now, based on what you learn in the Hello real world project to make week three, and week four, a lot simpler.
Week Three, we’re going to go through that unit testing and documentation to your code. This one is probably one of the largest milestones we’ll do in the class, I think I added about 3500 to 4000 lines of code. My last semester, it was about 423 unit tests, I think this semester, you’ll be somewhere in the range of four to 500. But a lot of them are very, very similar code. But this is a great way to catch errors. In my model solution, I found about a half dozen errors just by going through and doing all this unit testing. So it’s a very useful technique.
Then we’re getting to week four, and five, where we will go through and refactor a lot of the code in our object oriented libraries to use inheritance and polymorphism. This one is not as much lines of code, it’s about 1000 lines of code. But it’s a lot of changing, refactoring, simplifying structure. So there’s a lot of code changes, but not a lot of new code added. And then you’ll also be working on the milestones. I forgot to change the dates in here, but there’ll be about toward the end of September. And then beyond that, we’ll start working on graphical user interfaces, external libraries, web library, serialization, libraries, all sorts of stuff like that.
So my big advice for this class, this is a four credit hour course, which means I expect eight or more hours of work each week. I think, for most students that have completed this class, it runs around 12 to 15 hours a week, which is about what you’d expect from a four credit hour course. So I really encourage you to schedule your time very wisely. Start early on these assignments, watch the example videos, work through them and leave time for questions. The one thing it’s really hard to do is work on these projects over a weekend. And then they’re immediately due early that next week. And you may not have a whole lot of time to get questions and feedback before it’s actually due. So start early, leave plenty of time for questions. There is a lot of boilerplate code in here. So as you copy paste code, make sure you do so carefully. Really bad copy paste can mean a lot more work for you, then being careful about what you copy paste and editing it very carefully, a little bit at a time. And then of course, in this class, we’re using Git, so use Git to your advantage - commit to Git frequently. The nice thing about Git is if you commit, and then you do something and it screws things up, it’s very easy to roll back to that previous commit and undo what you did. And then start again. So commit frequently commit early and often. And then of course, in this class, we’re going to be doing a lot of large code. So if you have any online resources that you use to learn particular things, make sure you cite them in your documentation. There are some times where you’ll be pulling code from external libraries or templates or documentation. And I want you to make sure you go through and cite that so that we know where you’re doing that. This is especially important for your final project, but it might also come up on the restaurant project as well.
Beyond that, feel free to keep in touch with me. We’ll have good discussion on Discord throughout the semester. I also host tee time office hours, myself and several faculty. So we’ll be online Tuesdays at 330 and Fridays at 1030. So you can always get a hold of us there. And then I have one on one office hours that you can schedule anytime via Calendly. So make sure you do that if you have any questions. Other than that, good luck this semester. And good luck on this course. I’m looking forward to working with you and hopefully we see each other again soon.