One of my main tasks of 2022 was to develop safe and open environment for Citizen Data Scientists to grow in my current workplace. For those who are not familiar with the concept, according to the most popular definition by Gartner, Citizen Data Scientist is a person who creates or generates models that leverage predictive or prescriptive analytics, but whose primary job function is outside of the field of statistics and analytics. I aim to find such data enthusiasts in my organization, reach out to the various business units and enable them with the proper knowledge and tools using both internal and external training opportunities to do make their work easier with data science.
All this journey is constantly pushing me to seek for new ways of how to improve the program. I know it’s hard and time consuming, but for me each person has different ways of how he/she best absorbs knowledge and I am not a fan of approaching all employees same way. There are people who’s more keen on 1-2-1 mentoring, some prefer online group trainings while others feel best when learning on own pace with e-learning opportunities. Some of them have experience with various programming languages from their university or previous job, while there are employees who have never done any coding but their domain knowledge is impressing.
You may wonder what this introduction and citizenship concept have in common with the article’s title. Let me explain shortly. Today I would like to introduce you to the wonderful resource I have come across last month which inspired me so much of how to approach students with no prior experience in computer science or coding. CS50 is not only a great example of how to develop highest level content but also how to deliver learning experience as joyful as watching your favourite Netflix series in your spare time. Just from the first lecture of the course I knew that it’s definitely a kind of resource I would like to get inspired from for my further actions.
CS50 is an online course offered at Harvard University. It is an introductory course to computer science that covers topics such as programming, algorithm design, and data structures. The course is designed for students who have no prior experience in computer science. It is primarily aimed at students who are either in their first year of college or do not possess any college education.
CS50 was created by David Malan and he continues to teach it every fall semester at Harvard University. It’s worth to mention, that it’s known as the most popular course at Harvard with enrollment rates of more than 800 students every semester. Why? Among various reasons which I’ll share with you in this article, it’s mainly because the course uses simple language to explain complex concepts so that anyone who has high school level mathematics can understand everything.
Before I’ll elaborate more about my personal reasons and recommendation of this training material, let’s dive deeper into the course curriculum. The curriculum for CS50 class at Harvard University is well-rounded and it covers a variety of computer science topics. You will learn a lot about programming, web development, data structures and algorithms, the Internet, and much more. If you want to know more about the Computer Science field and what can be done with it, then taking CS50 class is a great start.
- Week 0: Scratch
Computer Science. Computational Thinking. Problem Solving: Inputs, Outputs. Representation: Unary, Binary, Decimal, ASCII, Unicode, RGB. Abstraction. Algorithms. Running Times. Pseudocode. Scratch: Functions, Arguments, Return Values; Variables; Boolean Expressions, Conditionals; Loops; Events; Threads.
- Week 1: C
C. Source Code. Machine Code. Compiler. Correctness, Design, Style. Visual Studio Code. Syntax Highlighting. Escape Sequences. Header Files. Libraries. Manual Pages. Types. Conditionals. Variables. Loops. Linux. Graphical User Interface (GUI). Command-Line Interface (CLI). Constants. Comments. Pseudocode. Operators. Integer Overflow. Floating-Point Imprecision.
- Week 2: Arrays
Preprocessing. Compiling. Assembling. Linking. Debugging. Arrays. Strings. Command-Line Arguments. Cryptography.
- Week 3: Algorithms
Searching: Linear Search, Binary Search. Sorting: Bubble Sort, Selection Sort, Merge Sort. Asymptotic Notation: O, Ω, Θ. Recursion.
- Week 4: Memory
Pointers. Segmentation Faults. Dynamic Memory Allocation. Stack. Heap. Buffer Overflow. File I/O. Images.
- Week 5: Data Structures
Abstract Data Types. Queues, Stacks. Linked Lists. Trees, Binary Search Trees. Hash Tables. Tries.
- Week 6: Python
Python: Functions, Arguments, Return Values; Variables; Boolean Expressions, Conditionals; Loops. Modules, Packages.
- Week 7: SQL
SQL: Tables; Types; Statements; Constraints; Indexes; Keywords, Functions; Transactions. Race Conditionals. SQL Injection Attacks.
- Week 9: Flask
Flask. Route. Decorators. Requests, Responses. Sessions. Cookies.
- Week 10: Emoji
- * Cybersecurity
As you can see the course perfectly introduces you to the whole concept of programming – from complete foundations which is C, underlying under today’s newer languages, via with you’ll learn about functions, variables, conditionals, loops and more, to higher-level languages like Python. Moreover, it touches not just topics of how to write programs but also how computers themselves work underneath the hood, memory and all. All of that, we’ll teach you how to think more methodically, solve problems efficiently and give you a solid understanding of top programming languages’ use cases and background.
Requirements to get certified
Although I have only got familiar to all recorded lectures, you can also take part in the course more practically and even finalize it with a certificate. To do so, you’re expected to do a few additional steps described below:
- Complete 9 Problem Sets after weekly lectures
Problem sets are programming assignments via which you implement each week’s concepts in code.
- Submit 9 Labs after weekly lectures
Sections are supplemented by weekly, 75-minute labs led by the course’s teaching fellows. Labs are (even smaller) opportunities to work on practice problems for the week’s problem set.
- Complete 9 Quizzes
Quizzes are short checks for understanding due after lectures. The intent of each quiz is to help you apply each week’s concepts to new problems.
- Complete Test
The test is opportunity to synthesize concepts across weeks and solve new problems based on lessons learned.
- Design and develop Final Project
The final project is your opportunity to take your newfound savvy with programming out for a spin and develop your very own piece of software.
There are several options to get certified. To do so, I think most convenient way online is doing the course via edX platform (more details here). Get enrolled and complete it in your own pace. It offers a paid verified certificate, which costs $150.
As far as I know there are also other options for certificates but to be honest as I wasn’t much interested in any, I haven’t dive deeper into them. I will leave you some details I’ve found out on FreeCodeCamp website so that you could simply get familiar with your preferred choice:
- Free certificate via Harvard OpenCourseWare
- Paid verified certificate via edX
- Paid certificate and academic credit via Harvard Extension School
Gallery of Final Projects
As an inspiration, you can also get familiar with some of the past few year’s final projects of CS50 graduates – here. 🙂
Who should take CS50?
Everyone interested to get into or know more about programming.
In my opinion you can approach the course two ways:
- If you’re already decided about your future development direction – figure out first what your goals are, then choose what classes to take, e.g. skip lectures that have nothing in common with your area of interest.
- If you still seek for inspiration – watch the whole material first, explore all possibilites and then decide which path is good for yourself.
CS50 is a great place to start e.g. if you just want a general introduction to web development. Of course it’s not the only resource you’ll need to take but if you also keep reading books, and do some online research in meantime, in combination with CS50 you’ll quickly understand the concepts that underly all programming. Just remember that nobody has ever learnt coding just watching videos or reading books – you need to apply the knowledge practically, get your hands dirty, for example solving CS50 excercises immediately after watching lectures and then, after the course decide on the language you’d like to get more advanced in.
On the other hand, as CS50 gives you the solid understanding on the basics and applications of each programming language, having this overview it will be easier for you to decide in which direction to go further. I see this course a great option for anyone who’d like to get into IT industry, learn coding, but still struggles to find area for himself. Should I go into data science and learn Python? Or maybe software development would be more interesting for me? IS it better for me to become a frontend or backend developer? Watch CS50, complete excercises and find the right path for youself.
Decision whether to take or not CS50 depends on your expectations. If you look for something more practical, to feel confident with your programming skills afterwards, this certificate can be a little bit useless. For better or for worse, this is not a crash course. It’s more general introduction and can fulfil your foundations but if you aim to learn a specific topic quickly, like React or Python for example, then it’s better to take dedicated training, buy subscription to e-learning platform or join bootcamp instead.
CS50 won’t get you job. It can improve your ways of working in your current position, for example with a better understanding of objects like hash tables. It will build your foundations, improve your general understanding and introduce you to the way of how computers perceive the world but won’t give you a lot of ready-to-apply solutions in your work. So if you’re not new to the field, have already some computer science overview and don’t want to prolong this introductory process, you can skip the course or just as myself, watch only recorded lectures to find the useful ways of how to my ways of working more optimal.
Why I have decided to do the course?
I haven’t done it for the certification. As I mentioned, it’s a beginner-level certificate and I feel that already knew majority of the concepts shared in the course. But, it was important for me to participate due to two main reasons:
- I have solid maths background but never studied strict computer science. I wanted to check if I have any gaps in my knowledge which I could fill.
- As mentioned in the introduction, I am leading Citizen Data Science program and I wanted to understand how to approach people who are not technical.
I have watched only recorded lectures, via YouTube. I definitely would like to do also some quizes and review labs when I have some free time, but it’s not a must for myself.
Considering both personal motivations described above, I am not disappointed. CS50 given me exactly what I wanted and I do not only feel more confident with my computer science knowledge but also have a lot of inspiration to reuse in my future mentor role.
Why is it worth to take CS50?
Reason 1: It’s free!
If you’re not interested in edX or Harvard Extension School certificate, like me, the course is completely free. What’s more, you can watch it on YouTube, while doing cardio on the gym or eating your lunch. I see it as a big advantage especially for those who are considering moving to IT industry but would like to verify if it’s something of them first, before they spend a lot of money for all potential subscriptions and books. Very mature approach – fully recommend!
Reason 2: No programming experience needed.
As a person who have already joined several courses and communities I can say that it’s quite common that there are a lot of people more advanced that you are. It’s definitely a good thing as in my opinbion it’s always better to be little less experienced person in the crowd and learn from your colleagues than a true star and have the right to be lazy making sure everyone follows you. On the other hand, if you’re a truly beginner it can be overwhelming at first.
In CS50 you don’t need any prior knowledge. You can come from a totally different field, like law or sales, with not a single line of code written in the past. You can ask stupid questions. You’re here to learn your all the basics and get ready for more advanced and specialized material.
Reason 3: The curriculum is well-rounded
The course does a great job of being beginner-friendly and challenging at the same time, because the lectures walk you through the content well but the assignments require you to really think and do more research. Also, often they give you a choice of two assignments, depending on whether you’re “more comfortable” or “less comfortable”.
The course authors not only structured the course to give you the idea of how to apply basic syntax of selected programming languaged but also made sure that you develop the right mindset in meantime. Below you can find some of the learning objectives you can expect from CS50:
- Broad and deep knowledge of computer science and programming
- Knowhow for thinking algorithmically and solving problems in programming
- The important concepts like abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development
- Connecting vibrant communities
- Making final project to present to peers
Personally, recorded lectures were more than enough for me, but what really stands out in the online course is the homework part. Now you might think, how is the homework the distinguished part? Well, the course videos sort of explain what you need to build the program specified in the problem sets. The actual problem sets, however, are the meaty part of the course, this is where you can put your brain to work and (kind of) solve real world problems. Such problems include, retrieving lost images from a raw data file, ciphering messages and/or passwords, or even implementing your own hash table to make a spell checker. Not even does it stop there, but it continues to teach about Python, how to use Python for the back-end and some front-end knowledge as well.
Reason 4: Energy and passion from the instructor and staff
The lectures are truly a joy to watch. I’ve watched them as you do Netflix series. You don’t need to force yourself to press the play button as it’s usually during many online courses or tutorials. If all lectures in my university would be led like this, I promise, I would never skip any! Although each recording lasts over 2 hours, I have completed them in less than 3 weeks as I simply couldn’t wait for the next talk.
I think that the biggest recommendation I can give you is that for me, David become the biggest inspiration of how to give presentations and teach people. I have always enjoyed sharing knowledge, develop my own content but I struggled a lot of how to communicate it. To be a good teacher, presenter or mentor you need to also have good presenting and communication skills. The way how David engages audience, how cleverly he selects his examples so that those would not only be educative but also joyful really amazed me. He’s really the stage animal, even wearing a protection mask on the lectures recorded in 2020!
As you can see David is also pretty active on his social media. You can follow his activity for example on his Instagram account but let’s me elaborate more on the channels in the final, 5th reason.
Reason 5: Community Experience
CS50 is promoted on various channels – you can find interesting content on your favourite platform choosing from the range of Facebook, Twitter, Instagram or even Tiktok. The staff also records its own podcast so as you can see there is not a single medium left alone. They know how to develop perfect community experience and deal with your brand these days! You can see all available options here.
As I am the one in my workplace working on Data Science Community agenda and also post a lot personally on both this blog and Instagram, it is incredibly benefitial for me to see how the CS50 staff does their job in this area! Not only with various communication platforms but also individual approach towards individuals’ learning preferences! There are various documents, videos, and presentations on their website that will help you learn more about CS50 and computer science in general. You can boost your knowledge and skills using a variety of assignments from recordings to quizes and labs. I hope there’ll come a time when I’ll reach at least half of their level in terms of teaching approach and community development. 🙂
I hope I have made clear all the reasons why I recommend taking CS50 basically to everyone. This is the BEST online resource anyone could take to get into computer science. No background needed. It encapsulates most of the aspects of computer science to give the student a general overview of what they’re getting themselves into. I’ve seen many teachers, universities that fail at doing this in my region and online.
I am really worried about the future of education to be honest, looking at the curriculum not being adjusted to the 2020+ reality needs and I hope that there will be more people like CS50 staff trying to overcome the pattern. To change the world, we need to share and promote brilliant resources like that and make sure we learn from the ones who approach things right.
Hands on experience over theory. Use cases and practical applications over remembering stuff and boring slides. Knowledge sharing and proactiveness instead of working in silos, dealing with own problems. Development of useful soft skills which are the ones that doesn’t change over time comparing to the hard ones. Even if you’re already an expert of your field, I really recommend you to watch Harvard’s course and see how to share your valuable knowledge further.
If you’re interested in other learning content recommendations I’ve already given on this website, read more below: