Subsections of Weekly Updates

Spring '25 Week 1

YouTube Video

Resources

Edited Transcript

Hello, and welcome to CC 410 Advanced Programming, the first week of the course in spring 2025. My name is Russell Feldhausen. I’ll be your instructor for this semester. My contact information is here on the screen. I work mostly remotely from the Kansas City area, so I’m not on campus very often. Generally, you can find me on campus on Mondays throughout the semester, although for the first couple of weeks of class, I’ll actually be on campus on Wednesdays. You can always email me at russfeld at ksu.edu, or you can find all my contact information on my website, which is russfeld.me.

So in this course, the big picture is we’re going to teach you advanced object-oriented programming. At this point, you should have taken several courses in Java or Python programming. You would have learned about data structures and all of the basic ideas around programming. This is the class where we take it to the next level. So in this class, you’re going to learn a lot about the object-oriented programming paradigm. We’re going to learn about unit testing and design patterns. We’re going to learn how to build a graphical user interface using a traditional method. We’re also going to build a web interface and do a little data serialization to store data on our computer. And we’re going to do this using three different methods. We’re going to do some example projects where you’ll follow along with my example to complete a project. We’re going to do a restaurant project, which is a long-form set of milestones that we’ll do throughout the semester. And in you yourself, we’re going to work on a final project that mimics the restaurant project, but it’s a self-directed topic so that you can apply that in your own area of interest.

So in this class, we’re going to introduce a lot of new technologies. First and foremost, we’re going to learn how to use Git and GitHub Classroom to store and maintain our code. Git is a very professional tool that almost every developer uses to track their code, so we’re going to get used to using that. We’re going to use automation tools such as Gradle for Java or Tox in Python to automate a lot of our build process. We’re going to introduce type checking and unit testing and style checking and documentation. All of these things that professional developers need to know how to do in their code, we’re going to work on doing that here in this class.

So as I mentioned in this class, there is a final project. You get to choose the topic. We want the topic to align with your interest and give you a chance to use the new skills you’re learning in this class. You and I will work together to discuss the scope and scale of your project and make sure your topics are on track. The final project itself is about four milestones that you’ll work on. And at the end of the class, you’ll actually do a presentation. We no longer present to the whole class, but you’ll present at least to me. The final project itself is about a quarter of the size of the restaurant project that you’re going to work on. And so as you get a few milestones in the restaurant project, you’ll get to see exactly what we mean about the scale for the final project.

So this first week is mostly just administrative stuff, getting you oriented to the course and what’s going on. We also do a project that I like to call Hello Real World. If you remember back when you first started learning programming, a lot of students, your first project is the Hello World project where you print Hello World in your programming language. We’re going to do that again, but this time we’re going to learn how to do it as a professional would do it. We’re going to use proper object-oriented structure, we’re going to document our code, we’re going to add unit testing, we’re going to add style checking, all of those things that a professional developer would do if they were writing a hello real world for their job. You’ll also be scheduling your first final project meeting to meet with me either this week or next week to talk about your final project. We’ll also discuss some things such as office hours, communication platforms, and you have an assignment out there to introduce yourself on the ed discussion platform, which is what we will primarily use for this class.

Then we get into next week where we start learning how to do object-oriented programming by building a class library for our project. We’ll work on the first restaurant milestone, and that project is pretty large. It is about 2,000 to 2,500 lines of code, which may already be several times bigger than the largest project you’ve ever worked on. However, most of this is boilerplate code, so once you get one part of the class library working, a lot of it you can copy, paste, and adapt existing code. The thing I tell you is to be thoughtful about your code and your structures. Don’t try and write all 2,500 lines of code raw. Try and build parts of it and learn how you can copy, paste, and pick and reuse things in your code, so that you start to see those common structures throughout your code.

Then we’ll go on to week three where we introduce unit testing and documentation. We’ll write some unit tests to confirm that our code library works correctly. This balloons the size of your project to about 4,000 lines of code, and at least in my model solution from several semesters ago, I ended up writing 423 unit tests. Again, many of them are repeats that you can copy, paste with minor changes, but still, it’s an awful lot of code, so just be aware of that. But this gives you a really good chance to catch errors in your previous work before you move on.

And then we get to weeks four and five where we start introducing more concepts around inheritance and polymorphism and restructuring our existing code to better take advantage of the object-oriented programming structure. And then by then, we’ll already talk about final project milestone two, but that’s already toward the end of February when we get there. beyond that we’ll introduce things such as graphical user interfaces, external libraries, web interfaces, etc. We’ll talk a lot more about those as we get to that point in the course.

So one thing we’re doing this semester that I think is really fun is I’m actually giving you a choice of the restaurant project that you want to do. I have two restaurant projects that I have used in previous semesters that I have cleaned up for this semester. One of them is called Game Grub where the menu is all built around things such as board games and then another one called Star Fleet Subs which is set in the Star Trek universe. And so a lot of the menu items are kind of punny jokes based on either Star Trek characters or board games that you may have played. The choice of the restaurant doesn’t really matter. It just tells you what menu items you’re trying to work with but you can choose either one. So if you’re interested in either one go for it. The Game Grub one is the one that is currently linked in Canvas. It’s the one that you’ll see if you go through the course. if you want to find Starfleet subs it is linked online in the textbook I give a link to it in the first intro announcement before this one so you can find it there or you can just talk with me and I will send you that information.

So some advice for this course this is a four credit hour college course which means I’m expecting you to have about 12 hours each week devoted to this course so if you’re working full-time this is about a day and a half of a full-time 40 hour week if you’re working solidly throughout that entire time so be aware that this is a four credit hour course the last four credit hour course you may have taken in this program would have been CC 210 so that gives you an idea I would recommend taking some time to schedule your time very wisely this semester make sure that you’re devoting enough time to this class and of course as soon as I give you a milestone start working on it and leave time to ask for questions most of the milestones are due on Mondays and the biggest mistake I see students make is they don’t start working on the milestone at all until Friday or Saturday and then they don’t have time over the weekend and then they get stuck and then it takes Monday or Tuesday to get answers to their questions and all of a sudden there’s two or three days behind so if there’s a milestone to start working on it Tuesday or Wednesday of that week so you’ve got time to get your questions answered and then you kind of know where you’re going so you have the time to work Saturday Sunday to get it done and get it turned in you can always ask questions you can get feedback on your code early that’s one of the nice things about using Codio and github is I have the ability to look at your code in progress so you can send me an email and say hey I’m working on this I’m not sure I’m getting it right can you look at my code and help me out I can totally do that.

Copy paste your code carefully - I do encourage you to copy paste code in this class unlike previous courses but I’m talking about copy pasting within your own Codio instance be careful as you do so it’s really easy to get your variable name screwed up what I don’t want you doing in this course is using tools such as chat GPT to generate your code that really defeats a lot of the purpose of the learning that we’re trying to do in this course and so I really want you to build the code yourself but you can copy paste within your own Codio to reuse things that you’ve already built. Just don’t use things like chat GPT or GitHub CoPilot. They really, really are going to shortcut your learning in this course, and I guarantee you’re going to have a hard time as you get further on and try and debug the code that those tools create. That said, you are welcome to use and cite other online resources. So for example, in this course, if you can’t remember how to sort a list, you can go look that up. I don’t expect you to remember that, but if you do borrow code from any other website, add a comment to cite where it came from, and try and not use it as your entire project. But if you need a little piece of code and find it online, just cite it, that’s totally fine.

Other than that, this is really the first time we’ll talk this semester. There’s a lot of different ways you can keep in touch with me. First and foremost, I really want you to use the Ed discussion boards. That’s a great way to chat between you and I and also your fellow classmates. So please feel free to post there. That’s my preference by far. I’m also on Microsoft Teams. So if you find me on Microsoft Teams for the K-State Microsoft Teams, I’m on there. You can usually chat with me there. I also host Tea Time office hours, which are going to be, I believe, Monday afternoons this semester. So you’ll see, for those of you in the computer science department, you’ll see some notes from David, one of the advisors about this. If you’re not in the CS department and you want to learn more about Tea Time, let me know and I’ll email you about that. And then finally, you can always schedule one-on-one office hours with me. I don’t hold official office hour blocks anymore because I work online. Instead, I have a Calendly that you can click on to schedule one-on-one times with me. And for the most part, that works. If I feel like I’m getting a lot of demand on Calendly, I may step aside from that and start doing scheduled block office hours. But generally, most students just need a five or 10-minute question so you can grab a time on my Calendly and we can meet during the day and get that taken care of.

So that’s all I’ve got for this first week’s announcement. Throughout the semester, I will try and post one of these a week, roughly once a week. So if you have any questions, let me know. I will talk every week about what’s going on that week and give you tips and tricks to help you out. But best of luck this semester, I’m rooting for you. This is gonna be a very tough class, but I know you can get through it. I know a lot of students before you have. So don’t be afraid to ask questions if you get stuck. And best of luck and I will see you again next week.

Subsections of Spring '25 Week 1

Spring '25 Week 2

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week two announcements for CC410 in spring 2025. So this week you should be wrapping up the first module, which is the Hello Real World project. It introduces some of the coding style and some of the things we’re going to use in this class. Thankfully, that project is mostly just a follow along with me on the videos project, so you should be getting that wrapped up today. And then also, if you haven’t already, you should schedule your first final project milestone. It’s just a quick check-in meeting with me to get to know each other and talk about the final project in this class.

Then this week, you’re going to shift over and start working on the basics of object oriented programming. These are things that you maybe have seen before, but we’re going to go a little bit deeper into the theory and reasoning behind why we do the things we do in object oriented programming. We’ll do a quick object oriented programming example, and then you’ll start working on the first milestone for your restaurant. And remember that you can choose the restaurant project that you want to work on. There is an announcement that details the different restaurant projects that you can choose from. So, other than that, if there’s any updates, you can check the Ed discussion board for any discussions there for grading. We’ll kind of practice this on the first Hello Real World project. You’ll see your actual grade is filled in in the rubric on Canvas, but you’ll get comments on GitHub via the feedback pro request. I’m pretty sure those will send an email to your GitHub’s email account, so watch for that. But you can always go back and check for those as well.

Otherwise, I think so far so good. Everything seems to be going well in this class, so I’m pretty happy. The first milestone, like I talked about, is a lot of doing object oriented programming, so it’s a lot of boilerplate code to create the data classes that we’re going to use for this class. To make things easier, I encourage you to follow the style and documentation guides we talked about in the first project, but those are not required until later milestones. So you can take it a little easier on yourself and not have to worry about getting everything right at first, but you can work on that and make sure that it’s there. In my estimation, this first milestone takes anywhere from three to eight hours to complete, and a final solution will be anywhere from 1,500 to 2,500 lines of code, depending on how you write it. As always, feedback is welcome on my milestone descriptions. I try and make them as clear and as detailed as possible. If something is unclear, let me know and I’ll work on it.

So other than that, after there, we’re gonna spend the next few weeks working on just object-oriented programming details. So we’ll spend some time on documentation and unit testing. We’ll introduce inheritance and polymorphism again. We’ll spend some time working on debugging, logging, and lambda expressions. And then we’ll get into things like design patterns, which I think are one of the most important takeaways from this class, probably other than unit testing is design patterns. So hopefully everything’s going well. As always, if you have any questions, let me know. Expect most weeks to see an announcement video like this posted on Tuesday, but because of the week I’m on campus on Wednesday instead of Monday this week, so you get an announcement on Monday. But in the future, these announcements will probably be posted sometime around Tuesday morning, so you can watch for that. So anyway, best of luck this week and I will see you all again next week.

Subsections of Spring '25 Week 2

Spring '25 Week 3

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week three announcements video for CC410 in spring 2025. So you should have already wrapped up the second module which is on object oriented programming. We do a small example on object oriented programming where you make a few data classes and then you worked on the first big restaurant milestone where you made object oriented programming classes for each of the menu items in that restaurant itself. So this week we’re going to move ahead by talking about some things around documentation, unit testing and UML to actually diagram your program. We’ll do a documentation and testing example. And then for your second restaurant milestone, you’re going to write unit tests to actually review the code that you wrote in the previous milestone and make sure it’s correct.

So for the second milestone, you’re going to be writing unit tests. The number of unit tests that you write may vary. My model solution has around 400 unit tests, but it may be a little bit overkill. So in the range of three to 400, I think is what’s appropriate. You’ll have documentation comments that you’ll add to all your code. You’ll add a UML class diagram for your project. In total, this project should take between three and eight hours as long as you work pretty diligently about duplicating unit tests carefully between the different classes. You’ll find that most classes have very similar unit tests. So this one may be between 3500 and 4000 total lines of code, but a lot of that again is repeated and copied. And as always, feedback is very welcome.

So some big hints for the second milestone. Do not look at the source code for your solution to milestone one. For example, the mistake that a lot of people make when writing unit tests is they pull up the code for the class they’re going to test and then right next to it, they write a unit test to test that code. That leads to tests that are bad. What we want to do is we want to write tests that confirm that the code works correctly, not that the code works like it is written. So for example, if you’re checking the price of an item, you should go back to the original menu from the milestone one description and look at the menu price for that object and code that into a unit test. You shouldn’t look at the source code to figure out what that price is because if the price is wrong in the source code, your unit test will then test for the wrong price. A lot of students have made this mistake. One thing you can do is you can use global attributes at the top of your test for things like the price and the number of ingredients and the toppings and things like that. You could just have some global attributes at the top and then write the unit test so that they just read those attributes. In that way, you can just copy paste all the unit tests between the classes and change those global level attributes to represent the different classes. There’s a lot of different ways you can do it. You should also look at parameterized tests across enums to check all the different values. For example, if you’re not sure how to do that, here is some examples of generalized tests using global variables in both Java and Python. For example, this Java one, I have a price and a calories at the top. And then when I check for the correct price, the correct calories, I just reference that global variable. So instead of having to change those values down in my code, I can just change them at the top of the class and then copy paste all these unit tests in between the multiple classes to check the price and check the calories.

Beyond that, I really want to encourage you to think about this class in terms of a growth mindset. The milestones in this class are challenging. They’re meant to be challenging. The only way that you’re going to grow and get better as a programmer is by being challenged a little bit. And so when the milestones don’t feel like they’re easy, that’s because they aren’t. We want you to learn. So I want you to take some time, make sure you’re reading very carefully. If something doesn’t make sense, ask for clarification. And then, of course, start early, work methodically, and commit your work often to Git. For example, the milestone that’s do this next week, you should be starting on it right now and starting to work through that code a little bit at a time, instead of saying, oh, I’ll just do everything on Sunday. When you try and work eight hours in a block, that’s really, really hard to do. So if you do a little bit at a time, that helps you figure out if you run in any errors, if you need any assistance, things like that.

So looking ahead after this week, we’ve got milestone four. Next week is going to talk about inheritance and polymorphism. Then we’ll spend a module on debugging and logging. Then you’ll have your second final project check in toward the end of February. Then we’ll switch over to do design patterns and test doubles, which I think are the two really cool things we cover in this class. And then after that, we’ll talk about graphical user interfaces, web interfaces, et cetera. So hopefully things are going well. You’re going to write an awful lot of tests this week, but it’s really, really good practice to get used to writing unit tests for your code. It’s something that you do a lot if you write professional software. As always, if you have any questions at all, feel free to let me know. Otherwise best of luck, and I will see you again next week.

Subsections of Spring '25 Week 3

Spring '25 Week 4

A Repeat

Good morning! Unfortunately I’m not feeling very photogenic this morning so I won’t record a new announcements video. Instead, here is a repeat from last semester that has all the pertinent information about the upcoming milestone. Best of luck!

YouTube Video

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 entrees, 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.

Subsections of Spring '25 Week 4

Spring '25 Week 5

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week five announcements video for CC 410 in spring 2025. My apologies for not being here last week. I was under the weather, but hopefully last year’s video worked out really well. So this week you’re going to be wrapping up a module on inheritance and polymorphism. You did a small example exploring inheritance using a blender and a bunch of fruit. And then we also have in this class a start, stop, continue survey that’s out there. I’ve already seen a couple of responses from students. Basically I use that as a short little chance for you to give anonymous feedback to me throughout the semester of things you want me to start doing that I’m not doing, something you want me to stop doing that I’m doing that you don’t like, or something you want me to continue doing if you think it’s really important to your success. It’s just a great way for me to get some feedback and see what’s working and what’s not in the class. You also have some time this week to start thinking about your final project because there’s not a big restaurant milestone that’s due right now. So start thinking about how your final project idea might fit into some of the stuff we’ve already done with the restaurant milestones.

So this week we’ve got another new module. This module deals with debugging and logging and also introduces lambda expressions. So you’re going to do a quick example with debugging and logging and you should be continuing to work on the third restaurant milestone. That milestone you have two weeks to work on. So obviously it’s a larger milestone than before. So make sure you give yourself plenty of time to work on that third restaurant milestone. You should also be scheduling your second final project meeting. However, please be aware I’m out of the office entirely all of next week. I will also post an announcement to this effect later this week. It means I’m going to be unavailable for any scheduled meetings or anything next week. So if you need to schedule a final project, ignore the due date. Just get it on my calendar sometime between now and spring break and we’ll get that final project meeting taken care of.

So this week milestone three, all general requirements are enforced. That means your project needs to have all of those things we did in the Hello Real World project, including MyPy for type testing, using flake for style guide, using documentation. All of those things are going to work. to be enforced in this milestone, and if they’re missing, there are going to be point deductions that are taken off if you miss any of those things. So make sure you match all the requirements. You’re going to add some inheritance to your existing classes. You’re gonna refactor some stuff, add some new unit tests, and update your UML diagram. All told, this is really only about 1,500 lines of code added or changed, but you have to be very delicate and very careful to make sure that you’re changing the right parts. And as always, feedback is welcome if you have any questions or concerns about the milestone.

So some big hints for this milestone, work in small chunks. I see a lot of students that will slowly work through this entire project. They’ll kind of take everything apart, start trying to change it, and then they’ll get way in the weeds, and it’s hard to test if it’s all torn apart. So try and work on one part at a time, work in small chunks, take advantage of Git, use Git to commit early and commit often and save your code. That way, if you have something working and then you try and fix something else and it breaks, you can roll back to that earlier commit and try again. This isn’t also a good time to try a test-driven development, so you can actually try and write your unit tests before you try and pass them. That’s really an interesting thing to do. I give a hint on this one. You should always inherit the item or order item class on the base class and not the individual classes. So for example, in the entrees, the base entree class should be the one that inherits from order item. And in all of the subclasses of entree, don’t have to explicitly inherit order item because they’re inherited from the base class that inherits that. And finally, if you have any questions on syntax, please let me know, especially when we work with this inheritance stuff in Python, sometimes the syntax is a little weird. So don’t be afraid to reach out and ask questions if you have any questions on that.

Looking ahead for the rest of this next few weeks, we’ve got some time spent on design patterns and test doubles the next couple of modules. I’ve said this before, I’ll say it again. I think those are probably two of the most important modules in this class. And then after spring break, we’ll shift gears a little bit and we’ll start working on graphical user interfaces and things like that. And then leading toward web APIs toward the end of the semester. So hopefully everything’s going well. I know we’ve gotten a lot of snow this week and the week before. So hopefully it’s not too miserable out there. I know it’s really, really cold today, but try and stay warm. If you have any questions, let me know. Otherwise best of luck. I will not post a new announcement video next week because I’m on the road. I’ll probably repost a repeat from last semester again. But if you have any questions at all, feel free to let me know. Otherwise, good luck. And I will see you in a couple of weeks.

Subsections of Spring '25 Week 5

Spring '25 Week 6

A Repeat

Good morning! I am travelling this week and won’t be able to record a new announcements video. Instead, here is a repeat from last semester that has all the pertinent information about the upcoming milestone. Best of luck!

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week six announcements video for CC410 in fall 2024. So this week you should be wrapping up the modules on debugging, logging and Lambda expressions. There’s a small example that you do on debugging and logging and then the third restaurant milestone is due pretty soon. So make sure you get that done. You also should be scheduling your second final project meeting with me. So I look forward to hearing about some of your interests and things that you’re looking at for your final project. This is again, just a quick discussion to see where you’re at on project planning and maybe give you some advice of things that you could start working on in your final project as you have some time over the next few weeks.

So this week we’re going to launch into one of the most important topics in this class, which is design patterns. So you’ll do a small example this week, building some design patterns in an example project and then you’ll update your restaurant project to include some new design patterns and you’ll also work on the first concept quiz. So for the fourth milestone, we’re going to add some new design patterns building around an order class, a combo class, a combo builder class and an order number singleton class. All of those are pretty important classes for us to be able to build orders and combos out of our menu items that we can add to our cart. So you’re going to keep track of all of those. We’re just building those in this milestone. And then the unit tests for a lot of these are going to be in the next milestone. I used to do these all in one milestone, but I found it was a lot easier to split them into two milestones. So you have time to work on building the code for all the different design patterns in this class. And the next time we’ll add the unit tests as we learn about test doubles and mocking.

So the other thing that you’ll have this week is the first concept quiz. This is basically a quiz to check your understandings of some of the concepts that we’ve covered in this class, including object oriented programming theory, code comprehension, UML comprehension and the ability to do unit testing. I want you to think of these not exactly as an exam, but more of a check for understanding for a lot of the concepts that we worked on. This has a two hour time limit and it is open book, open notes, open code, but all of the- Your work should be your own. So for example, do not go to chat GPT and ask it these questions and then copy paste the answers. You can reference your book, you can reference your notes, you can reference your code from this class, but I really want this to be a representation of your own work and understanding of these topics. That’s really what I’m looking for just to see how well you actually have understood some of the bigger concepts that we’re looking at in this class. So that’s what this quiz is about.

Looking ahead after this, the next module we’ll talk about test doubles, which is really what we need to do unit testing for a lot of these design patterns. Then we’ll shift gears, we’ll start talking about graphical user interfaces and how we can do things with event -driven programming to make our GUIs more effective. So hopefully everything’s going well. Hopefully things are progressing very nicely in this class. As always, if you have any questions, let me know. Otherwise I look forward to seeing you all again next week.

Subsections of Spring '25 Week 6