Skip to main content

Posts

Showing posts from April, 2019

CST 338 - Final Week

It's the end of 338! What a long, strange, and somewhat difficult journey it has been. Over these past eight weeks, I have learned a lot about software design and good coding practices. Out of all of the things I've learned in this class, I'll definitely be taking designing and interpreting UML diagrams with me throughout the rest of my career, as well as following good coding standards. UML diagrams and software coding standards are two things I see at work everyday, and now I find them much more interesting and useful after this class.  The number one piece of advice I would give to future students in this class is to start assignments early, come up with a good design on paper first before translating it to code (one of my math teachers in 7th grade told me "when it doubt, write it out." It's been one of the best pieces of life advice I've ever gotten), and communicate with your team well. If any student can do all three of those things, then I am con

CST 338 - Week 7

This week, we created a simple Android application that displays the names of each course required to graduate from the CS Online program, which also implements basic search functionality by returning course descriptions when a user searches for one by course number.  Prior to this, I had taken a class in Android app development at my community college, and all of the assignments I had to do in that class were similar in specifications and scope. The final project for that class was very challenging, and I don't think many people managed to finish their project or get it up and running properly. My application wasn't the prettiest, but at that point I was glad to get it up and running. Despite my experience in that class, I still consider myself a novice when it comes to Android programming. I find mobile app development fascinating, but it comes with its own challenges, especially involving event based programming, that not everyone likes dealing with in terms of writing cod

CST 338 - Week 6

Dueling cards? Who ever knew that would be the assignment for this week's class? I guess the professor and TA did, because that's what our group worked on this week. Our program this week was largely an extension on the card game we did last week, although this time with more rules. In addition, we also did major restructuring of our backend code by following the Model-View-Controller architecture. Model-View-Controller, or MVC for short, describes an architectural pattern where a program is divided into three independent, yet directly related subunits: the model contains data structures, variables, and the fundamental internal logic of the program, the controller takes user input and communicates with the model to manipulate internal data, and finally, the "view" provides a graphical display of the program to the user, and updates this display accordingly.  Our team found the assignment challenging just like last week, and the most difficult part was getting th

CST 338 - Week 5

This week, we wrote an extension of our card game application and made it GUI based by implementing Swing, a classic Java framework designed for building GUI applications. GUI Programming comes late in learning Java for a good reason - programmers working with GUIs must understand event-based programming, how to implement interfaces and abstract classes, and how to deal complex files such as images graphics instead of just primitive data types. I don't think that learning all of this late is harmful since it requires a pretty good understanding of a lot of Java concepts, and learning event-based programming is somewhat difficult the first time around since everything is quite abstract.  Swing, from my experience this week, seems like a primitive way to make GUI based applications, and the hardest part for me was adding each GUI element and getting it positioned and working correctly. I've worked with more modern GUI development platforms and they make creating a window, add

CST 338 - Week 4

This week, our team worked on quite a difficult assignment, in my opinion, which embraced two out of the three cornerstone principles of object-oriented programming: polymorphism and inheritance. Polymorphism, like the Greek roots its based on, roughly means "many forms" in English. This allows programmers to write code that is an interface for different data types, while in most cases achieving the same functionality. Consider a theoretical Shape class and all the classes that can inherit from it, such as the Circle, Square, Triangle, and Pentagon classes. All of these shapes have different numbers of points, lines, and algorithms used to draw them. However, by making each class combine its own data and code within the Shape class, a programmer could write a draw() method/function, and another program calling this draw() function could get the correct shape depending on the parameters used. Thus, this theoretical draw() method could have many forms, which is the defining c