Eyes, JAPAN Blog > An excellent Computer Science online course

An excellent Computer Science online course


We are constantly welcoming new part-time workers who come to the company and eager to learn new topics: Machine Learning and Artificial Intelligence, Responsive Web Design, Security, etc. But it is not a secret that even the hottest topics are based on fundamentals concepts of Computer Science. Fundamentals that will never age and will always be required in future directions. Some examples of such concepts are the data structures, algorithms, computational complexity, how the computer memory works.

Moreover, because Eyes, JAPAN is a Software Engineering company, so I think the refreshment of fundamental knowledge of Computer Science will be handy for every engineer.

That’s why today I would like to write about Harvard’s course CS50, that I took last year. Its primarily intended for beginners, but even experienced coders will find many exciting things to know or recall.

The course is very informative, but at the same time, it is presented so vividly that lectures will look like your favorite series. Besides lectures, you have fantastic homework (problem sets) after every lecture. Problem sets have chosen so well that they allow you to better understand the material from the lecture and create something real and useful. As an example, I wrote a program where you can enter a credit (or debit) card number, and it will display which company produced this card, e.g., American Express, MasterCard, VISA. It will also check if the card number is correct by using Luhn’s Algorithm. Even if this program is not hard to implement, it was very cool to understand that I can code it on my own. The other problem set, which I enjoyed, is called “crack.” The idea was to guess a password (to make the program simpler, assume password consists only with five lower or upper letters). Another memorable homework was to implement a speller check! And of course, there are many more exciting problems!

On top of that, the course is free! You can check it out either on Harvard’s page or edX platform.

Here is how the CS50 home page looks like:

The main lecturer, David J. Malan, received his Ph.D. in Computer Science at Harvard University and started teaching CS50 course in 2007. He is very creative and improves the course every year.

The CS50 course lasts for ten weeks. Next is the short overview for every week:

Week 0: Scratch

In week 0 (yes, counting starts from zero, like in most programming languages!), David Malan covers the introduction topics like: What is computer science? How to represent data (e.g., letters, numbers)? What are the algorithms? How to write pseudocode? Also, he introduces Scratch. It is a block-based visual programming language and website targeted primarily for children or those who just started to learn how to program.

Week 1: C (programming language)

In week 1, you will be able to write your first program in C programming language, which prints “Hello, world!”. You will know what does It mean to “compile” the program. You will understand strings and other data types in C, all compared with Scratch. You’ll look closer on types, formats, operators.

Also, David explains about imprecision and overflow.

Week 2: Arrays

In week 2, you will start compiling your small programs and will know about the Debugging process. You will discover different data types and how much bytes they occupy. You will get info about memory in our computers: RAM, random-access memory, and hard drive (or SSD). And more about strings, arrays, and command-line arguments.

Week 3: Algorithms

During week 3, you will learn about searching (linear, binary) algorithms, big O notation, different sorting algorithms (selection, bubble, insertion, merge sort), and when to use recursion.

Week 4: Memory

During week 4, you will dive into computer memory: hexadecimal counting system, which used for addresses in memory; pointers (it was the hardest part for me!). You will know how to deallocated memory, which is no longer used by the program, and how to use the “Valgrind” tool, which checks on a memory leak.

You will know about files, how to open/close, and read/write/append them from (to) files.  Also, you will be able to write a program that opens a file and tells you if it’s a JPEG (image) file or not.

Week 5: Data Structures

In week 5, you will learn more about different data structures and work a lot with Arrays, Singly-Linked Lists, and Hash Tables and Tries in C language. Also, you will know about queues. You will get information about stack and how to push/pop elements into a stack.

Week 6: Python

After every week, you had problem sets with different tasks to solve. This week, you will get the basics of Python language and rewrite several previous problem sets in Python. I was very impressed with how smaller and easier programs became! After week 6, I decided to start the “Python Crash Course” book by Eric Matthes, to learn more about Python language.

Maybe, my next blog post will be about this book 🙂

Week 7: SQL

In week 7, David starts with an explanation of the database. As an example he chose Google spreadsheets with names of students and their favorite TV show. Then, he will show how to work with .csv files. During this week, you will understand the basics of SQL and how to work with sqlite3.

Week 8: Information

In the last week, David talks about privacy and gives some ideas for the final project. The final project lasts for two weeks and gives the opportunity to explore one of three tracks: web programming, mobile app development (for either iOS or Android), and game development with Lua.

After passing the CS 50 course and all the homework (problem sets) you will get an understanding of many fundamental topics in Computer Science. Then you’ll be able to continue with any topic that you’re interested in. I highly recommend this course!

  • このエントリーをはてなブックマークに追加

Comments are closed.