Fall 2023

Subsections of Fall 2023

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

YouTube Video

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

Subsections of Fall '23 Week 1

Fall '23 Week 2

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week two announcements video for CC 410 in Fall 2023. You’ll see me in these videos about once a week. They’re a little bit more informal. You’ll notice I don’t put up my background or anything, but it’s a chance for me to talk through some things that I would normally say if we were in class at the beginning of class. So this week you should be wrapping up the first module, which is Hello Real World Project and getting that submitted. You should also have by now scheduled a final project meeting with me, just that we can discuss the final project in this class. If you haven’t done that already, please find my calendar link and schedule a time to chat with me sometime this week. This is just a chance for us to meet each other and talk a little bit about the class and the upcoming final project. This week you’re going to get started on the first restaurant milestone, which covers object oriented programming. We’re going to reintroduce a lot of those concepts that you’ve probably seen before in previous courses. We’re going to go a little bit bigger. We’re going to make a lot of different classes and some different packages, and we’re going to make that all work together to represent the menu at a restaurant. So hopefully this is a really useful milestone.

Some updates in this class. Don’t forget, if you have questions, you can always use the Ed discussion board. I can respond there pretty quickly. You can also email me at the CC 410 help email address. So in this course, as I’ve talked with a lot of you in person, I’ve mentioned that grading is done in person or it’s done manually. It’s not done in person, but it’s done directly by me. The rubric itself, you’ll find those on Canvas, but I usually go in and leave code comments in GitHub as part of the GitHub pull requests. Every time I leave those code comments, I believe you’ll get an email from GitHub telling you to go find those. But usually in the Canvas link, I will put the first link in there, so hopefully you can find my comments and feedback. If not, if you have any questions, let me know. Other than that, I think things are going well so far this semester. Everything seems to have started off without any major issues, so hopefully we keep going well. So for the first milestone, it’s a lot of packages and classes like I talked about. It’s a lot of bDoilerplate code. There are several entree classes, there are several side classes and drink classes. They’re very similar in structure, but they have slightly different variables and slightly different values. So one thing you can do is usually write one of them really well and then copy paste a lot of that code into the others.

So other things that you can think about is if you want to make things easier later, you can already start thinking about coding style and adding your documentation comments. Those are not required until the next couple of milestones, but if you add them now, it makes things easier down the road. I estimate this milestone would take anywhere from three to 8 hours to complete. It really depends on your background and the way that you work and the way you code for reference. When I did the model solutions for these milestones, I did each one in about an hour. But I have a lot of experience and I know exactly where I’m going with this. So I estimate for most students, three to 8 hours should be about right. The end product is about 1500 to 2500 lines of code, depending on how much style and documentation work you do. And then of course, with all these milestones, feedback is welcome. If there’s something that’s not clear or well explained in the milestone, please let me know. I reserve the right to tell you that that’s how it’s meant to be, that sometimes I leave things a little vague on purpose, but I can also go in and make changes very easily if anything’s unclear, so let me know.

Looking Ahead after this module, the next module will cover some things about documentation and testing. Then we’ll spend some time on inheritance and polymorphism, a really interesting topic. The module after that is on debugging logging and lambda expressions. And that gets us to the end of September where we’ll have our second final project meeting. And then from there I have reworked some of the modules from last semester. So we’ll talk about design patterns and test doubles in modules six and seven. So that’s really all I’ve got for today. I hope everything’s going well as always. If you have any questions, you can find me on the Ed discussion board or via email at CC 410 help. Don’t be afraid to schedule meetings with me on calendar if you want to meet one on one. Otherwise, best of luck this week and I will see you again next week.

Subsections of Fall '23 Week 2

Fall '23 Week 3

YouTube Video

Resources

Edited Transcript

Hello and welcome to the Announcements video for CC 410 in Fall 2023 on week three. So this week you should be wrapping up the second module, which is the first restaurant milestone, which is on object oriented programming. There’s a short example that you should do working with the short Little Sunday Shop. That’s kind of fun. Don’t forget on that one, you need to actually create the second class yourself. It’s not covered in the video, so make sure you get that done. And then the first restaurant milestone should be due, so hopefully you’re getting that done as well. Also, if you haven’t scheduled the first meeting for the final project, make sure you do that this week. You definitely want to meet with me on Zoom so we can chat about the final project and make sure everything’s set up there. So if you haven’t done that, please make sure you do that.

This week. We’re going to have a module talking about documentation, introducing the concepts of unit testing, and talking a little bit about UML diagrams. There’s an example project that talks about documentation and unit testing. And then you’ll do the second restaurant milestone, which is all about including unit tests in your project. So for the second milestone, you should be adding about 400 unit tests to the project. Your number may vary depending on the size of your project and how you do it. You should also be adding documentation comments to your project and creating a UML class diagram. My estimation is this should take anywhere from three to 8 hours to do, depending on your background, and this may involve anywhere from 3500 to 4000 lines of code. However, a lot of those lines of code are unit tests and documentation comments. A lot of that is repetitive code that you can copy, paste and then tweak between the different classes. So don’t try and focus on writing all of this from scratch. Write the parts that you need and then copy paste it and build out the classes. The you should you’re really trying to focus on working smarter, not harder here, because it would take forever to write all this out by hand. So hopefully the milestone makes sense. I give you some tips on various unit tests you might want to include. And as always, feedback is welcome if there’s something unclear in any of the milestones. It.

Some other big hints for this milestone. First and foremost, I encourage you not to look at your source code. What I mean by that is when you’re writing your unit tests, for example, you’ll have a unit test that checks the price of various items on the menu. Don’t look at your source code to figure out what that price is. Look back at the original menu from milestone one. If you have a typo in the price in your source code, you’re going to have that same typo in your unit tests and you’re not actually they’re going to check anything. And so when you’re writing your unit tests, you should go back and look at the actual menu and not your source code. When you write your unit tests, another thing you can do is use global attributes, especially in the unit tests. For example, the unit test to check the price is the same in every class. But at the top you could have a global variable that says this is the price for this class, or this is the price for small, this is the price for medium. And then you can use those global attributes elsewhere there. That way it makes it easy. You can just copy paste all the source code, change those global attributes, and it will run the unit tests. You can also generalize things. There are some unit tests that you can use that are parameterized, but you cannot generalize the ingredients in the entrees. So, for example, on one of the entrees that has ham and cheese as separate ingredients, it’s really hard to generalize that. There are some things you can do with code reflection. I don’t recommend trying to do it, it’s really complex. But things like the toppings and things like some of the sizes, you can use parameterized tests for that. And so this slide gives you kind of an example of what I mean by generalizing your tests. For example, this is a test that checks the price and the calories for an item. These are not correct. This is from an old project, but it gives you the idea of having these global price and calories variables. And then you’ll notice the code below. Really the only thing you have to changes the name of the object and everything else goes really well. So this is generalized. You could copy paste this, do a quick find and replace it’s pretty quick.

So beyond that, after this week we’ll talk a little bit about inheritance. Next week we’re going to refactor some of our code to take advantage of inheritance. We’ll spend some time talking about debugging. And that gets us to the end of September, where you’ll have your next check in on the final project. And then as we go into October, we’ll spend some time on design patterns, test doubles, and then we’ll switch over and talk about user interfaces, web and et cetera. So this project is all about testing, so hopefully you’re able to write lots of good unit tests for your project. If you have any questions, comments or concerns, feel free to let me know. Otherwise, good luck this week and I will talk to you all again next week.

Subsections of Fall '23 Week 3

Fall '23 Week 4

YouTube Video

Resources

Edited Transcript

Hello, and welcome to the week for announcements video for CC410 in fall 2023. This week you should be wrapping up the second restaurant milestone, which is all on documentation testing in UML. You’ll be adding documentation and testing to your code, so this is a lot of code to add to the restaurant project, and it’s really the first time you get to work with unit tests. Hopefully you’re able to figure that out and get that working, but if not, let me know. And so you should be turning in the second restaurant milestone pretty soon, and I’ll work on getting those graded later this week, but hopefully that module goes well, and you’ll be able to move on to the next stuff.

This week we’re going back to some of the concepts in object -oriented programming. We’re going to spend some time talking about inheritance and polymorphism, which is a topic you’ve seen before, but we’re going to go at it a little bit different in this class, coming at it from more of a theory perspective of why we do this. You’ll have an example of how we use inheritance and code, and then you’ll have some time to work on the final project as well as fill out a start, stop, and continue survey. Really briefly on the start, stop, continue survey, what that is is it’s a very quick survey that I ask throughout the semester in a basically last three questions. It asks you if there’s anything you want me to start doing that I’m not doing, if there’s anything you want me to stop doing that I’m currently doing, and if there’s anything you want me to continue doing if I’m currently doing it. It’s completely anonymous. It’s kind of meant to be a mid -semester T -val, but at this point it’s a good chance to check in and see if there’s anything I can do differently or anything I should make sure I keep doing for you. So feel free to fill out that survey if you have any comments or feedback on the way this class is going.

So next week we’re going to add some additional new content. We’ll talk about debugging, logging, and Lambda expressions, and you’ll do an example around that, and this is where the third restaurant milestone is. So this is one of the couple of times in this class where I actually give you two weeks to work on a restaurant milestone just because it’s new and it’s different content, and so I really want you to take some time over the next couple of weeks to go through that restaurant project. Don’t save it until the last minute. Please take a look at the restaurant milestone as soon as you get there so that you know where you’re going. Also by the end of next week I want you to schedule the second final project meeting. This is a chance for us to check in. chat a little bit more about your final project ideas, see kind of where you’re going, and if you need any help or assistance getting started on that.

So, like I said, milestone three is gonna be doing two weeks. This is the first milestone where I’m enforcing all of the general requirements. So your milestone must pass the style checker, the type checker, it must have documentation comments for everything, it must have unit tests for everything. So it’s a really big milestone. You’re going to add some inheritance and refactor some of your existing classes. So we’re gonna take everything apart and kind of put it back together in different ways. You’re gonna have to add some new unit tests to enforce that. You’re also going to be updating your UML diagram. And so overall, I think milestone three, you really end up touching only about 1500 lines of code. So it’s less lines of code than the previous milestones, but it’s much more complex because you have to be pretty selective about the lines of code that you’re updating. And then of course, as always, feedback is welcome on these milestones if anything doesn’t make sense.

So some quick hints for milestone three. First and foremost, really try and work in small chunks. One of the things I see a lot of students do on this milestone is they take apart their entire project and try and do all of the inheritance refactoring in one shot. And that can work, but if you break something, it’s really hard to tell exactly what you broke. So try and work in small chunks. Try and do inheritance for the entrees first. Try and do inheritance for the drinks first, something like that. As you’re working, anytime you get something working, commit to get. So commit early, commit often. That way, if you do make a mistake, you can roll back to a previous commit instead of trying to figure out how to undo what you did. This is also a good chance where you can try test driven development. Now that you know how to write unit tests, you can actually try and write your unit tests and then write your code to match the unit test. It’s kind of an interesting concept. One big hint that’s not clear in the milestone itself is that order item class that you’re going to make. I think I call it item or order item this semester. You’ll want to inherit that on your base classes. You’re going to make a new base class for drinks side and entrees. That’s where you want to inherit the order item. If you try and inherit order item on the actual entrees themselves, like the Riker or the Picard, it gets a little complex. You really want that hierarchical inheritance, so make sure you do that. Then, of course, if you have any questions on syntax, let me know. We’re doing some new things in both Python and Java, so you may not have seen all of this syntax before. If you have any questions, just let me know and I’d be happy to help.

Finally, after this looking ahead, we’re talking about inheritance in this module. Then we’ll talk about debugging. We’ll have some time for design patterns and test doubles going forward. Hopefully, everything’s not on fire, but sometimes that’s how this module can feel. Do the best you can to take your module apart and refactor it and make sure that you keep things under control. As always, if you have any questions, let me know and I will see you again next week.

Subsections of Fall '23 Week 4

Fall '23 Week 5

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week five announcements video for CC410 in fall 2023. This week you should be wrapping up a module on inheritance and polymorphism and there’s also an example on inheritance that’s really fun. Also this week you’ll be asked to complete the start -stop -continue survey. I talked about that a bit last week. It’s a short survey that’s kind of an informal T -val in the middle of the semester giving me some advice on things I should either start doing, stop doing, or make sure I continue doing. And hopefully this week you have a little time to start thinking about final project topics and things that you might want to look at and we’ll actually have our final project milestone do in the next couple weeks.

So this week we’re going to have another quick module of content that talks about some concepts around debugging and logging in our code. We’ll also look at Lambda expressions which are very important to use in certain situations. You’ll do a quick example on debugging and logging and then this week you’ll have your third restaurant milestone and the second final project milestone do as well. So in my last video I talked a little bit about milestone three. This is the first milestone where all general requirements are enforced so your code needs to match the style checker, the type checker, it needs to have all documentation in it. So make sure you get that taken care of. You should be adding inheritance to your code by refactoring a lot of the previous classes to add those base classes. You’ll also need to add some new unit test to account for that and update your UML diagram. I’ll told this module is only about 1500 lines of code so it’s less than the previous milestones but it does require a lot of careful work to make sure that you don’t break anything and that things keep working and as always feedback is welcome.

So for milestone three like I said last week biggest hint is to work in small chunks. Try and pick one thing like building the entree base class, take care of that, get that working, then move on to the other parts, work on your milestones a little bit at a time. Don’t be afraid to commit early and commit often to get. That way if you break something you can roll back to that previous commit instead of trying to undo what you did. This is also a good opportunity to try test driven development. You can write some of your unit tests before you actually write your code and then update your code to pass the tests. The big hint that I always give is to inherit the order item or the item class on your base classes. So you’ll have a new base entree class. It should inherit the order item interface. That’s the easiest way to do this. And then of course you can ask me questions on syntax anytime. So looking ahead after this module, the next couple of milestones, we’ll talk about design patterns and test doubles, which I think are really big takeaways from this class that will be very interesting. And then we’ll shift modules and talk a little bit more about graphical user interfaces, event -driven programming and things like that.

So hopefully as you work on this milestone, you don’t find it too frustrating, but hopefully it works out really well. I think this is a really good exercise to go through and refactor some of your previous code, but of course you might find it a little bit frustrating to work on. So hopefully it’s not too bad. But as always, if you have any questions, let me know and I will see you again next week.

Subsections of Fall '23 Week 5

Fall '23 Week 6

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week six announcements video for CC410 in fall 2023. So this week you should be wrapping up the example on debugging and logging and also an example around Lambda Expressions. You’ll be working on the third restaurant milestone, which is quite a big one where we add some inheritance and polymorphism in your project. And you should also now be following all of the guidelines regarding style checking, unit testing, type checking, all of that. You should also be scheduling your second final project meeting with me. So if you haven’t done that already, please make sure you take care of that.

And then this week we’re going to switch gears and we’re going to spend some time talking about design patterns. If I had to say the biggest takeaway I want you to get from this course is probably working with design patterns. So we’re going to have a restaurant milestone that introduces some design patterns into the project itself. And then also this week you’ll have access to the first concept quiz in this course. So for the milestone, like we said, we’re going to add a couple of design patterns, namely around the order class and the combo class. We’re also going to add a combo builder and an order number singleton class to explore some other design patterns. And for a lot of these classes, we’re going to build them in this milestone and then we’ll add unit tests for these classes in the next milestone to kind of break that up a little bit.

So also coming up, you’ve got the first concept quiz in this class. This is kind of like an exam, but it’s meant to be a little bit lower stakes than an actual written paper exam, but it’s kind of the same idea. What I want to do is I want to check your understanding of some of the key concepts in this course. So for this concept quiz, it’s a quiz on canvas. You’ve got a two hour time limit. So once you start it, you need to be prepared to finish it within two hours. You can’t take a break and come back. So make sure you have a two hour time block to work on this. This concept quiz covers some basics of object oriented programming theory. It talks a little bit about code comprehension where I ask you to read some code and explain it. We have some UML diagrams that ask you to look at. It has you do a little bit with unit testing. The concept quiz is open book, open notes, open code. There are a couple of brief coding examples at the end that I’ll ask you to complete, so kind of be prepared for that. Please, please use books, notes, codes. Do not go to chat GPT and put in the questions and get the answers. This is really meant for me to understand your knowledge of the concepts in this course and if there are any weaknesses that we need to address later on. So please do the best you can, but please complete this honestly, following TasteAid’s honor code. Please don’t use any outside resources other than your notes, the book, and the code used in this class.

So looking ahead after that, we’ve got our module on test doubles, then we’ve got a module on introducing graphical user interface basics and event driven programming. So we’ve got some cool stuff coming up ahead in this course. So hopefully everything is strumming along so far. Hopefully things are going well for you, but if you have any questions or you’re falling behind, please feel free to let me know. Hopefully things go well, otherwise I will see you again next week.

Subsections of Fall '23 Week 6

Fall '23 Week 8

YouTube Video

Resources

Edited Transcript

Hello and welcome to the Week 8 announcements video for CC410 in Fall 2023. My apologies for missing last week’s video. I was on the road three days last week and I just didn’t get a chance to get the announcements done before it was too late for them to be relevant. But I’ll try and catch you up this week. So right now you should be wrapping up the module on Test Doubles, which is a really important concept in this class that allows you to do unit testing on classes that you’ve already written. You can just mock those up and use those elsewhere. You should also have scheduled your second final project milestone. If you haven’t done that already, please do that as soon as possible. And you should have also completed the first concept quiz. Hopefully that was a good review of some of the concepts we’ve covered, some of the techniques that you’ve learned. And I’ll go through and try and get those graded yet this week so you can get some feedback on that.

This week we’re going to shift gears and we’re going to start working on graphical user interfaces or GUIs. So this week the first example is really just building the basics of a user interface. So that leads to the restaurant milestone. And then we’ll also have a final project milestone that’s coming up in the next week or so. So watch out for that. So a quick note, I do have a couple more sets of upcoming travel this week and next week. Basically I’ll be gone Thursday through Sunday for the next two weeks. I’ve got a couple of events coming up. So I will be out of the office off and on. That just means that responses and grading may be delayed. So if you reach out to me Thursday or Friday this week or next week, it might be Monday or Tuesday before I get a chance to get caught up. If this causes any problems with deadlines and things, I will adjust deadlines and work with you to make sure it’s fair. But just be aware that my response times may be a little slow due to some upcoming travel this week and next week.

So on the sixth milestone, like I said, you’re going to create the basics of a user interface for this program. Remember we’re building a point of sale system for a restaurant. So this would be the cash register interface basically. For this one, we’ll create the overall GUI structure. I’m going to give you one example that you can follow, but you can actually build this however you want as long as it makes sense and meets the requirements. So feel free to get a little creative with this milestone. If you want to try and do something a little different, that’s totally fine. Looking ahead after this milestone, we’ll have some stuff on event driven programming, external libraries, creating releases, things like that. And then the last part of the class, we’ll get into some web stuff as well. So it’s week eight. We’re finally at the halfway mark getting through the semester. Hopefully everything’s going well for you so far. As always, if you have any questions, let me know. Otherwise, I will record another one of these next week.

Subsections of Fall '23 Week 8

Subsections of Fall '23 Week 10

Fall '23 Week 12

YouTube Video

Resources

Edited Transcript

Hello and welcome to the week 12 announcements video for CC410 in fall 2023. As you can tell, I’ve been a little bit under the weather, so apologize for the voice. But hopefully we can get through this pretty quickly. This week you should be working on learning about releases. We’ll do a quick example on actually creating a release out of a project that we’ve created so far. And then in the restaurant milestone, you’ll start working on an external library where we’re adding features to actually do the checkout process at the restaurant. It’s really cool. So milestone nine is all about adding a checkout. You’re going to work with an external library that I’ve written that simulates a cash register and a receipt printer. You’ll be able to check out using cash or credit card. You’re going to write the algorithm for making change and being able to pop up how much change to give. And you’re going to print a nice friendly receipt for the customer as well.

So milestone nine, there’s a few hints. First big hint is making changes hard, especially because the cash drawer has a limited amount of each denomination in it. In general, don’t worry about that right now. Write the basic making change algorithm. If it crashes after a few times, that’s fine. Only try and build in the part where you can make substitutions for different denominations if you have time. For example, if the cash drawer runs out of pennies and you need to turn a nickel into five pennies, you can do that. But be careful. It’s really, really tricky. So don’t worry about that. It’s not worth many points. But if you want to attempt that, you can likewise with the receipts. Remember, the receipts have a limited length of the line. So each line can only be a certain number of characters. So make sure you read the instructions for that and figure out the best way to represent your receipt.

I really recommend using the adapter pattern for this. You can go back and look at the module on design patterns. So you can take the register library and then you can either wrap it in an adapter class or you can extend it. Either one of those works. I really like wrapping it in a wrapper class. That makes it really easy. And then you can also read the unit tests that I wrote for the library. All of the code is open source. You can find the code for the receipt, the restaurant register library out on GitHub. It’s out there. You can see how I wrote my unit tests. That might be really helpful for you to understand how to interact with this library. you So looking ahead after this module the next one we’re going to switch gears and we’ll start working on web interfaces That’s the start of a bunch of smaller milestones, which gives you more final project time I apologize. There are two milestones that are due right after Thanksgiving It’s just because I left the gap in the schedule and I missed it until we got there But it shouldn’t be a problem those milestones are very quick and easy to get through So hopefully everything works. Hopefully when you’re scanning your credit card you get excited that it’s a match If you have any questions or concerns, let me know otherwise best of luck this week And hopefully you can get through the next couple weeks and make it to Thanksgiving. Good luck

Subsections of Fall '23 Week 12