Fall '24 Week 4

Resources

Edited Transcript

Hello and welcome to the week four announcements video for CC 410 in fall 2024. So this week you should be wrapping up the second restaurant project milestone, which involves adding documentation, unit testing, and a UML diagram to your project. You should have done a short example of adding documentation and unit testing to an existing project, and then you’ll expand that into the restaurant project. And hopefully you’re getting that all done. I noticed that so far I’ve only got one of those submitted, so hopefully you’re getting that wrapped up and submitted pretty soon later today. So this week we’re going to shift gears a little bit, and we’ll spend some time talking about inheritance and polymorphism, which are two of the really big reasons that we use object oriented programming in this class. We’re going to do a small example of looking at inheritance, and then you’ll have some time to think about your project, but there won’t actually be a restaurant milestone due this week. There is one due next week that includes debugging and logging as well. And so instead this week you’ll have a little bit of time to think about your final project. There’s a start stop continue survey out there, which basically asks you if there’s anything I should start doing in this class, stop doing in this class, or anything I should continue doing if you like things that I do. So it’s a chance for you to give some feedback. But really the big thing for this module is get through this module pretty quick so you can go ahead to the next module and start looking at that content and start working on the milestone, because there is a reason that I give you two weeks to work on this milestone. So you want to get to that as soon as you can.

So next week we’re going to introduce some things around debugging and logging. We’ll also briefly talk about lambda expressions, which are one of the important things that you’ll need for this. We’ll do a small example about adding debugging and logging to an existing project, one that you might recognize. And then you’re going to have the third restaurant milestone where you’re going to implement some inheritance and polymorphism in the existing code. It’s one of the few times where we actually refactor existing code to work in that way. And then there’ll also be the second final project milestone, which is due by the end of the week. So we’ll be there pretty quickly to the end of September by the end of next week.

So for milestone three, this is the first milestone where we’re enforcing all general requirements in the course involving documentation unit testing. typing all of those things that you did in the Hello Real World project. Those need to be implemented in Milestone 3. For those of you in Python, make sure you’re using a TOX file that has all of the correct commands in it. For those of you in Gradle, make sure you’re using a build.gradle file with all the appropriate add -ins added to it like we did in the Hello Real World. You’re going to add some inheritance to this. We’re going to create a parent class over our entrees, our sides, our drinks. We’re going to add some other additional interfaces and things like that. So you get to add inheritance to your classes and refactor a lot of code. And then, of course, you’ll need to create some new unit tests to check your inheritance and make sure that it’s working and update your UML diagram to match that as well. Overall, this milestone is smaller than the other two. It’s only about 1 ,500 lines of code changed or updated, but it is much more complex because you’re refactoring and adjusting existing code. So be kind of careful as you work on this milestone.

So some big hints for Milestone 3. First and foremost, I encourage you to work in small chunks. Don’t try and do the entire milestone in one shot. So don’t try and do the entire milestone in one shot. and then at the end, try and compile and run it. Work in small chunks, make sure your stuff is working as you make changes, and if you break something, try and get back to a working state before you stop. The second thing is take advantage of Git. You can commit early, commit often, you should have multiple commits for this milestone. One of the things that really worries me in this class is when I see students have one commit on GitHub per milestone, that kind of scares me because it really means you’re not using GitHub the way that you can, where you make little commits every time you get something working, so you can roll back if needed if you make a mistake. This is also a good opportunity to try test -driven development. You can actually try and write your unit tests before you write your code, and then get your code to actually fulfill those unit tests. It’s a really neat idea, and it’s a fun way to actually work on your code a little bit differently. Some of the other things I really recommend is you can inherit the item or order item interface on your base class, so you don’t have to inherit that on each of the Entrez side and drinks. If you inherit it on the base class, it will then transitively get inherited on all of the other classes as well. And finally, there might be some questions about syntax for some of this. Feel free to ask questions if anything doesn’t make sense or you’re not sure exactly how to do things because of interesting syntax.

So, like I said, module four and five, we’re gonna talk about inheritance and debugging and have another final project check -in by the end of September. Then we’re gonna shift over to design patterns and test doubles. Like I’ve said earlier, module six and module seven, I think are the most important new content that you’re going to learn in this class, probably outside of unit tests themselves. So we’ll spend quite a lot of time working on design patterns and test doubles before we shift over to working on user interfaces and things like that. So, hopefully everything’s going well. Hopefully you don’t feel like the whole world’s on fire with these milestones, but I do recognize that they are very large. They’re meant to kind of stress your ability as a computer programmer a little bit and give you opportunity for growth to really see how far you’ve come as a programmer. So make sure you go into these with the right mindset of knowing that it’s a challenge out there to help you grow as a programmer. It’s not meant to be obstacles or busy work to make this more difficult. It’s really meant to challenge you and help you grow as a programmer. As always, if you have any questions, let me know. Otherwise, I will see you again next week.