Object-Oriented programming (OOP) is one of the most popular programming paradigms nowadays. It reflects real life and is easy to understand. There are various programming languages to implement OOP, such as C++, Objective-C, Java, Python, etc. As a non-CS student with limited programming knowledge, to prepare myself for the application of a master of computer science program, I enrolled in Introduction to Object-Oriented Programming with Java course on edX which is built from Georgia Tech’s online for-credit version of CS1331. This course is designed for building fundamental programming skills and is recommended as a prerequisite lesson for the OMSCS program of Georgia Tech. It includes three sub courses covering the fundamental basics of Java programming language, the basics of object-oriented design principles and algorithms, and fundamentals of exceptions, data structures, recursion and graphical user interfaces (GUIs).
How you will learn in this course
The lectures were taught by Dr. Olufisayo Omojokun, the Chair of the School of Computing Instruction at Georgia Tech’s College of Computing. Each lecture is a short video about 1 minute to a few minutes followed by reading materials and practices, which is different from many other on-line courses I took and I really love such format. As a busy mom with a full-time job, it is too luxurious to find a whole trunk of time to sit down and study. Compared to long videos, the short videos allowed me to make the best use of my odd moments whenever I got a chance. Because each video just requires a few minutes of focus, the study is a relatively easy commitment. Many a little makes a mickle. Learning in such a format is very efficient and the process is enjoyable.
The lectures and practice problems
The lectures were well-organized and clearly presented with examples and details. You will see how to write lines of codes, run them and debug to get your desired output. The practice problems help you to test your understanding of the topic covered in the lectures.
The importance of doing homework for learning programming
Homework is challenging and some of it took me several days to finish. You really need to read carefully and follow the instructions and think hard. However, every homework assignment is like a project to be built and they are actually very interesting. You gain hands-on programming experience and establish confidence in coding by doing these projects.
My key takeaway and what’s next
This course not only taught me how to program in Java but inspired my love for computing. I started from how to run HelloWorld.java in my computer’s terminal to build complicated projects using OOP, and finally create GUIs using JavaFX. I was exposed to a breadth of topics in computing and at the end of the class, I was equipped with sufficient knowledge to program artificial intelligence games, simulate the interaction between predators and prey in the real-world, generate and upgrade files to record the operation of a clinic, implement search and sort algorithms. I spent about two and a half months to finish this course, after that, I took a course of Data Structures and Algorithms from Georgia Tech. Thanks to what I learned from this Java course, I found myself well prepared to understand the complicated concepts of data structures and implement advanced algorithms required for this course.
I highly recommend taking the verified track to get the certificate. By taking exams, your programming skills will be sharpened. 70% of the grade comes from the homework and the rest 30% from the exams. To get the certificate, your grade just needs to pass 70% which I didn’t find difficult as long as you do the homework, the practice problems and the final exam. Sometimes you may find that before taking the final exam, you have already passed 70% and the certificate is granted. There is a discussion forum to ask for help, you can post your questions and most of the time you will be answered by either TAs or other classmates. It is also helpful to find clues or solutions from others’ posts. Overall, this is an excellent class for anyone who wants to learn Java even without a CS background.