As part of my application to OMSCS, I took the recommended MOOC offered by Georgia Tech, titled “Introduction to Object-Oriented Programming with Java.”
Overall
Regarding the application to OMSCS, it was preferred to have a degree in Computer Science or a related field. However, if one does not meet this requirement, it was recommended to take three MOOCs. While Coursera is well-known for MOOCs, it seems that Georgia Tech provides courses on edX, and all recommended courses were available on edX.
Advancing to an Online Graduate Program Abroad While Working
I do not have a degree in Computer Science, but I became interested in object-oriented programming, which led me to take the following course. It appears that this course is essentially a replication of a university undergraduate-level class, requiring about 5-6 hours per week over a span of 5 months.
This course consisted of video lectures and reading materials. The content can be accessed for free upon registration, but grading of assignments and obtaining a certificate incurs a fee. It is structured in three parts, and each part can be purchased separately; however, a discount is available for purchasing all parts together. The total cost is approximately $700, which is not a trivial expense. Initially, I was uncertain about my ability to continue, so I only purchased Part 1. Ultimately, I was able to purchase and complete all parts. I remember using a coupon code for edX that I found through an online search.
Content
This is an introductory course on Java, where students learn the concepts of object-oriented programming through assignments. Evaluation is based on quizzes, assignments, and confirmation tests, with a certificate issued for scores of 60% or higher. Each part contains about 3 to 4 modules, each featuring simple multiple-choice questions and programming assignments. For the assignments, students must interpret detailed requirements, implement them in Java, and submit their work. Submitted assignments are automatically graded to determine if they meet the specified requirements. Ultimately, each part concludes with a timed multiple-choice test that can only be taken once.
Part 1: Foundations and Syntax
This part begins with the basics of programming languages, such as data types and arithmetic calculations, and covers arrays and methods. There were three coding assignments:
- HW01: As the first assignment, this was a simple task to find syntax errors in a provided program.
- HW02: The task was to create a simple calculator. Students were instructed to specify operations such as addition, prompting for the appropriate types of input and implementing a solution that handles these correctly.
- HW03: The assignment involved implementing a battleship game that manages the positions of ships using a 2D array.
Battleship Game
Part 2: Object-Oriented Programming and Algorithms
In this part, students delved deeper into object-oriented concepts such as classes, inheritance, and polymorphism.
- HW04: Implemented the Frog, Fly, and Pond classes, each with different behaviors. The assignment involved instantiating Frog and Fly within the Pond to represent an ecosystem. Properly setting the access modifiers for classes served as a practical example of encapsulation.
- HW05: Implemented logic for a game similar to Among Us. This included creating the RedAstronaut and BlueAstronaut classes, which inherited from the Player class. The RedAstronaut also inherited from the imposter interface, while the BlueAstronaut inherited from the Crewmate interface. (The assignment title, “Amidst Us,” was quite intentional.)
Part 3: Exceptions, Data Structures, Recursion, and GUIs
This section started with exceptions and covered lists and recursion.
- HW06: Focused on animals derived from the Pet class, with a veterinarian theme. Implemented behaviors after treatment for each animal using abstract methods and overrides, serving as a concrete example of polymorphism. Additionally, the assignment involved inputting and outputting appointment schedules to a file, implementing exceptions based on circumstances.
- HW07: Utilized generics to implement a linked list that included adding and deleting nodes based on indices.
Reflection
As I had not thoroughly learned about object-oriented programming languages before, this course was meaningful for solidifying the fundamentals. The coding assignments were closely tied to the lecture content and were engaging, which helped me continue my studies. However, the lack of deadlines meant that I had to self-regulate my progress, requiring considerable effort. Initially, I intended to complete all three MOOCs before applying, but ultimately, I ended up applying after finishing this course and half of another.