CS50: Introduction to Computer Science


Issuer: CS50, Harvard University
CS50 Cert

CS50 is a computer science course designed for students to understand the art of programming. Programming languages taught include C, Python, SQL, and web programming tools such as HTML, CSS, and JavaScript (there are also other tracks such as game or mobile app development). The course content is the same as the CS50 syllabus of Harvard University.

As my goal is to challenge myself to gain knowledge outside of my major, taking this computer science course is a big step for me to progress towards my goals. The problem sets of CS50 have enhanced my logical thinking and also have inspired me to relate classroom learning outcomes with real life applications.

Image Filters


An example of the problem sets is applying filter on photos by using C language as shown below:

Apply sepia effect:
Blur an image:

Spell Checker


Another interesting problem set is the design of a spell checker program that highlights all words with spelling mistakes in a long text file. This program was also written in C, which is a procedural oriented programming language.

Managing Databases


I particularly enjoyed using the SQL langugage to manage databases. In this course, we used a movie database from 1MDB, which is an open source, and write single but complex SQL queries to obtain specific data. For example:

Write a query to list the titles of the five highest rated movies that Chadwick Boseman starred in, starting with the highest rated:
Write a SQL query to list the names of all people who starred in a movie in which Kevin Bacon also starred:

Note that the table displayed at the bottom pane (under the SQL coding) is the results returned based on the input queries.

Having programming knowledge in managing databases is particularly useful as it can be applied in many fields. In engineering, databases are essential in handling maintenance systems that consist of a large amount of information such as maintenance date, maintenance items, type of maintenance, responsible persons etc.

Final Project


The main driver for me to take this course is to design an application, which can make a difference in my community. I hope to design an online educational platform that greatly benefits those who do not have access to the basic education. The most vulnerable in our community undoubtly needs education to transform their lives. Using SQL database with Python web programming, I have designed a basic structure for this idea. Here is my project description and video presentation.

There is a significant portion of people who do not have access to the basic education around the world. The reasons for this could be due to poverty, living conditions, political situations, and sometimes even due to some demographic factors such as race and gender. Due to a lack of education, the number of people living in poverty is increasing on account of insufficient competitiveness in the current job markets.

I vision education should be a human right instead of a privilege. Those children and youths who were not born with privileges (such as good wealth, strong family background, high accessibility to a variety of educational facilities in their hometowns) should not be left out. They need education to help them change their lives so that they can later bring hope to their families and communities. Therefore, I am creating an online educational platform targeting youngsters (especially the indigenous, the most vulnerable, the poor) who face difficulties in accessing to education.

There are many people, who have successfully obtained a sufficient level of education, are looking for ways to contribute back to their communities. The online education platform that I created allows them to sign up as a teacher to conduct classes based on their interests. Students of this platform can search their classes based on what they need and be connected to different teachers. The total volunteering hours of teachers and learning hours of students will also be recorded for their future profiles.

This project was inspired by CS50 after I have learned to program in Python (with Flask framework) and SQL. Similar to CS50 staff members, I am motivated to utilize online channels to bring a better life to my community through education. If a person is educated, his/her life will be changed; if many people are educated, the world will be transformed.