Spring '21 Week 1
Resources
Edited Transcript
Hello, and welcome to CC 410. My name is Russell Feldhausen. I’m going to be your instructor for this semester. And this is the first of the weekly announcements videos that I’m going to do in this class. My goal is throughout the semester, if I have anything interesting to talk about each week, I will try and record a video and post it sometime around Monday morning. I’m a little bit behind because it’s the first day of the semester, and I’ve had a few other things to work on. But in these videos, I’m going to briefly talk about what’s going on this week, address any questions we had during the previous week and give you a general overview of where you should be going in this course, my contact information is here, it’s also on the syllabus. It’s also in the intro video, you’ve probably seen it a few times. But if you have any questions feel free to reach out to me either directly or via the cc410-help email address that’s described in the syllabus and then the introductory material.
So CC 410 is a brand new course this semester. It’s developed based on the CIS 400 course that Nathan Bean teaches for computer science majors. And so a lot of the content is similar at the beginning. He teaches that class in C#, we’re learning in Java and Python. So a lot of the content has been adapted a little bit. But I’m still in the process of developing new content. So things may change as I figure things out for this course, or as I realize things that Nathan does don’t work as well for the course I want to teach. So please bear with me as we change things. And as always, your feedback is really welcome. If there’s something in particular you want to learn or something you think I could improve or do better in the next semester, I really welcome that feedback from you, as this is a brand new course for everybody.
So big picture in this course, what we’re going to focus on in this semester is object oriented programming. Also OOP is how the abbreviation looks. So we’re going to do a lot of class libraries and building really big projects, we’re going to focus a little time on graphical user interfaces or GUIs. And then toward the end of the semester, we’re going to look at some API’s how you can integrate either external code or write your own API with your code. So we’re going to look at a lot of those different things. throughout the semester, we’re going to do several hands on examples, you’ll get to see those where basically I set a project and then I record a video walking through that project, so you can follow along. And then you’ll take what you learn on those examples. And you’ll use them to complete this restaurant project that we’re going to do throughout the semester. It has about 10, or 12 milestones that we’ll do. And it’s directly built upon those examples. So once you do the example, you’ll have all the tools you need to do the restaurant project. And then in the background, you’ll also be working on a final project that we’ll talk about here in a second. And that’s going to be really your capstone from the computational core programs. So if you’re in the computer science certificate, or the integrated computer science curriculum, this is one of the big capstone projects that you’ll get to complete.
So in this course, we’re going to use some new technologies that you may not have worked with before. First and foremost is git, which is a source control system so that we can keep track of versions of our source. We’re also going to use GitHub classroom as one of the tools that I use to help manage everything. So you’ll get to learn how to use that in the Hello real world project that you’ll do first. for Java developers, we’re going to introduce Gradle, which is a compilation tool for Java, that helps make things a lot simpler. For Python, we’re going to use a tool called tox, which does a lot of the same things, just automating some of the things that we need to do in Python, Python, especially regarding introduced type checking the semester, which is something that Java developers have been dealing with since day one. For Python users, this is going to teach you a little bit more about how object oriented programming works and some ways that you can write better code in Python. We’re also going to cover unit testing. so we can write tests that make sure our programs work correctly, we’re going to focus on style checking, making sure that our code fits a particular professional style, which is really important. And we’re going to look at how we can write documentation in our code so that not only us, but other developers can help understand what our code does and how it works.
So as I mentioned, in this course, there will be a final project, the final project is self directed, you get to choose the topic for your final project. Hopefully, you’re able to find a project that aligns with your interests. So if you’re outside of the computer science major, if you’re in biology, or chemistry or statistics, there might be some interesting projects that align with that interest area. But the whole idea is to allow you to use the skills that you’re developing in this course and all the previous programming courses you’ve taken to build something of your own design. So as you come up with your topic, you’ll meet with me individually, we’ll kind of discuss the scope and some ideas for how you can implement that project. And then throughout the semester, there’ll be four different milestones where you’ll check in with me and see where you’re going on the final project. And then finally, at the end of the class on finals week, you’re going to create a presentation that will be shared with the class so they can see what you did with your final project. So I hope that’s a really good experience. It’s something very new in this course. So we’ll see how that goes.
So really quickly, a quick overview of the next few weeks and this course week one this week, which ends on the 31st. This week is a lot of administrivia, just going through the basic structure of the course. And then you’re going to do the first example, which is the Hello real world example. And this is a recreation of the HelloWorld project you’re familiar with. But using all of the new technologies we’re going to use in this course. So we’re going to write hello world that has unit testing and style checking, and is committed to Git and has documentation, comments, and a lot of things that you haven’t done yet. But it’s all really important stuff that you need to learn to become a professional programmer. I’m also going to have our first final project meeting. So sometime in the next two weeks, you’re going to schedule a time to meet with me via zoom, and we’re going to discuss ideas for your final project, we really need to get off the ground running with that. And then when we meet, I’ve got a couple of questions for you. I’m curious to see if you’re interested in live office hours via zoom or Discord. And I’m also interested if you’d be interested in communication platforms such as discord, we have a Discord server for the computer science department and I can create a channel for CC 410. It’s a great place where you can come and chat with other students and you can chat with me. But I don’t want to do that unless I’m sure that people are interested in having such a platform available. So we’ll discuss that when we meet for the first final project meeting here in the next couple weeks.
Week two, which ends on February the seventh, we’re going to build an open an object oriented programming class library for our restaurant project, we’re going to build a library that represents the menu of items at this restaurant that corresponds with the first milestone of the restaurant project. I spent this past weekend writing the model solutions for the first couple of restaurant milestones. And in my model solution, this one was around 2000 to 2500 lines of code, which for a lot of you, that’s going to be very daunting, because most of your projects in earlier CC courses were maybe a few 100 lines of code, some of the larger data structures might have gotten close to 1000 lines of code. Here we’re talking about a single week where we’re going to develop 2000 to 2500 lines of code so much, much bigger project. The nice thing is it’s mostly boilerplate, boilerplate code. So once you get one version written, you’re probably okay, you can copy paste a lot of that. However, I do warn you to be very mindful which as you copy paste, there’s a lot of chance to introduce errors into your code. And so you can actually make things worse if you’re not careful as you copy paste and make changes between all your files. So week two, it should take anywhere from I think three to eight hours to complete the week to milestone, it really depends on how familiar you are and how comfortable you are copy pasting and modifying code very quickly.
Week Three, which ends on Valentine’s day of February 14, we’re going to cover unit testing and documentation. And so for the second restaurant milestone, we’re going to add unit tests to our code. The unit tests are quite large. For my model solution, it took anywhere from 3500 to 4000 lines of code in the unit test files, which is a good rule of thumb, generally you think you’re going to have anywhere from two to five times as much code in your unit tests as you do in your code itself. And so all told, you end up writing at least 423 individual unit tests. However, a lot of those are repeats, you can reuse the same unit tests between files, maybe with small changes, and it’s a good chance to catch errors. I actually caught about a half dozen errors in my model solution for milestone one, by writing unit tests for milestone two, which shows that it’s really important to write these unit tests and how easily they can catch errors.
And then week four, and week five, which is the end of February, we’re going to cover inheritance and polymorphism. Again, this time, we’re going to go really deep into that and build interfaces and abstract classes for our restaurants. I have not finished writing that milestone yet. But hopefully by next week’s announcements video, I’ll have a little bit better idea of the scope of that milestone, I’m estimating that it’s going to be about 1000 lines of new code, but you’ll have to go through and change a lot of your existing code. So you may end up touching several 1000 lines of code, but you’re probably only writing about 1000 lines of new code. That one there, the actual project needs are the actual tutorials and examples are going to be due on February 21. But I’m giving you an extra week to work on the project part for that. So the restaurant milestone will be due the end of February. And that’s also when you’ll have your second final project milestone. And that second final project milestone is building the class library for your final project. So you’ll be doing a lot of the same stuff in your final project as you did in the first three restaurant milestones. And that all hits the end of February. And that’s really where I’m at in terms of the solid course development. I’ve got outlines for a lot of the rest, and I will be sending that out as I get that developed over the next few weeks. But at least for the first month or so we’ve got a pretty solid idea of where we’re going in this course.
So after that we’re going to discuss the big topic we’re going to cover is graphical user interfaces or GUIs. So we can actually build interactive programs. For this, we’re going to build a point of sale system like an ordering menu system for the restaurant, we’re going to look at how to integrate external libraries in our code, how to work with web API’s both pull data from a web API, and maybe even write our own web API to accept online orders from another service. We’re going to look at serialization how do we save the data in our program in between program runs and things like that. So that’s where we’re really going for the rest of the semester.
Some advice, this is a four credit hour course, if you’re in computational core, the last four credit hour course you would have taken would be CC 210, or CIS 200. And so this is a larger scope than the 310 and 315 courses. And so because it’s four credit hours, you can expect to spend at least eight hours each week working on this course. So that’s more than an hour a day, and probably several stints of a couple hours each working on these projects. So I really encourage you upfront to schedule your time wisely and make sure you have enough time to work on these projects. The milestones come really, really fast. You know, it took me most of this weekend to get through the first two milestones in both Java and Python. And so I expect for students, it’s going to take several hours to work through those milestones the first time. With your homework. Start early, make sure you start as soon as you can, so you have enough time to ask questions. Because this is an online course you’re not going to see me live in person all the time, which means that questions may take anywhere from a couple hours to up to 24 hours to get a response from me, depending on how quickly I can get to those questions. So leave yourself enough time to ask questions. Take advantage of Office Hours, take advantage of the ability to send emails to me, we’ll see if we set up a discord channel. But really make sure you give yourself a lot of time to work on these as your copy pasting code between your different source files, make sure you do so very carefully. It’s very easy to introduce difficult to solve errors by copy pasting code without paying attention. So copy paste a little bit at a time, like individual methods, tweak that method, and then continue on until you get comfortable with that. And likewise, once you learn how to use Git, don’t be afraid to commit your code to get very often. That way, if you do break anything, it’s really easy to roll back to your previous git commit and you can start over again. So you don’t have to completely unroll any problems you’ve made. Finally, I encourage you to use your online resources wisely. Especially in this class. We reference a lot of the Java API standards, a lot of the Python API standards as well as the documentation for a lot of tools that we’re using. Feel free to reference those just make sure if you pull any code from those that you cite that code. And you should only be pulling little bits of code like how to perform a particular action in a unit test or how to perform a particular structure in your code. Make sure you cite those with a comment. So I know where you found that resource. And that way, there’s no question about plagiarism. So keep that in mind.
Other than that, that’s all I’ve got to share with this first week. If you have any questions, email me via the cc410-help email address. You can also schedule a time with me by finding my calendly link. It’s on the syllabus. It’s on the webpage. It’s also in every email you’ve ever received from me, it’s in the signature at the bottom, but I’m really rooting for you. I hope that you do well this semester, and I look forward to working with each of you as we go forward. So good luck.