CS50: An Introduction to Computer Science

Overview

This is CS50, Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (More than half of CS50 students have never taken CS before!)

This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today’s newer languages, via which you’ll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all.

The course then transitions to Python, a higher-level language that you’ll understand all the more because of C. Toward term’s end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project.

Students should note that for this exceptional course, the material originally developed by Harvard has been modified to fit the Oxford system.

Associated skills: Cryptography, SQL (Programming Language), JavaScript (Programming Language), Data Structures, Forensic Sciences, Security Software, Computer Science, Cascading Style Sheets (CSS), Finance, Resource Management, Python (Programming Language), C (Programming Language), HyperText Markup Language (HTML), Algorithms.

Programme details

Course begins: 16 January 2025

Week 0: Scratch

Week 1: C

Week 2: Arrays

Week 3: Algorithms

Week 4: Memory

Week 5: Data Structures

Week 6: Python

Week 7: SQL

Week 8: HTML, CSS, JavaScript

Week 9: Flask

Week 10: There will be no class this week as students will be working on their final projects ahead of the showcase at the CS50 fair.

Week 11: CS50 Fair

Fees

Description Costs
Course Fee £595.00

Funding

If you are in receipt of a UK state benefit, you are a full-time student in the UK or a student on a low income, you may be eligible for a reduction of 50% of tuition fees. Please see the below link for full details:

Concessionary fees for short courses

Tutor

Dr Nick Day

Dr Nicholas (Nick) Day is a Departmental Lecturer in Lifelong Learning for Data Science and Computing at OUDCE. He has taught at the department since 2016 on a range of programming, software engineering, artificial intelligence and data science courses. He completed his PhD in Computer Science Education (CSEd) in 2020 and now applies his pedagogical research to the development of courses and contributes to the department’s AI Steering Group. 

 

Furthermore, Nick is a Senior Lecturer and Programme Leader for Buckinghamshire New University’s (BNU) undergraduate Computing course. He has been a Fellow of the Higher Education Academy (FHEA) since 2015 and is now preparing an application for Senior Fellowship (SFHEA). Nick is a Member of British Computing Society (MBCS) and is an AdvanceHE certified External Examiner, presently reviewing Cardiff University’s postgraduate Computing degrees.

Course aims

  • To teach you how to solve problems, both with and without code, with an emphasis on correctness, design, and style.
  • To provide you with a broad and robust understanding of computer science and programming.
  • To develop a familiarity in a number of languages, including C, Python, SQL, and JavaScript plus CSS and HTML.

Teaching methods

Recorded weekly lecture from David J. Malan at Harvard University, followed by a 2-hour live online class with Dr Nick Day at the University of Oxford.

Students are expected to complete the weekly problem sets ahead of the classes, and bring along any questions they have about the material. Work will not be marked ahead of the class so it is up to you to be proactive in asking for assistance with any topics you found difficult.

The weekly lecture is 2.5 hours, and the weekly problem sets will take 2+ hours to complete. You will therefore need to plan your time accordingly. 

It is recommended that students commit to a total of around 10 hours of study per week to benefit from the course fully.

Learning outcomes

By taking this course you will learn:

  • A broad and robust understanding of computer science and programming
  • How to think algorithmically and solve programming problems efficiently
  • Concepts like abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development
  • Familiarity in a number of languages, including C, Python, SQL, and JavaScript plus CSS and HTML
  • How to engage with a vibrant community of like-minded learners from all levels of experience
  • How to develop and present a final programming project to your peers

Assessment methods

​​​​​​Students must submit at least one problem set per week (to be communicated by the class tutor) to Gradescope for automated marking and grading. This is for the automated assessment of correctness and style only – we’re not marking for design. Students should complete all other exercises ahead of the weekly live class to get the most out of the course, but these will not be marked.

To qualify for a University of Oxford digital badge students must attend a minimum of 70% of classes, submit each specified weekly assignment to Gradescope, and present a final project in week 11.

Please note that assignments are not graded.

Application

We will close for enrolments 7 days prior to the start date to allow us to complete the course set up. We will email you at that time (7 days before the course begins) with further information and joining instructions. As always, students will want to check spam and junk folders during this period to ensure that these emails are received.

Please use the 'Book' or 'Apply' button on this page. Alternatively, please complete an enrolment form (Word) or enrolment form (Pdf).

Level and demands

This is an introductory course designed for learners with and without programming experience. Please see the very helpful FAQ page for more information (including data from previous students) here: https://cs50.harvard.edu/college/2024/fall/faqs/

The Department's Weekly Classes are taught at FHEQ Level 4, i.e. first year undergraduate level, and you will be expected to engage in a significant amount of private study in preparation for the classes. This may take the form, for instance, of reading and analysing set texts, responding to questions or tasks, or preparing work to present in class.

Selection criteria

There are no prerequisites in taking this course.