We may earn an affiliate commission when you visit our partners.
Course image
David J. Malan, Doug Lloyd, and Brian Yu

This is CS50x , Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan, CS50x teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. The on-campus version of CS50x , CS50, is Harvard's largest course.

Read more

This is CS50x , Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan, CS50x teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. The on-campus version of CS50x , CS50, is Harvard's largest course.

Students who earn a satisfactory score on 9 problem sets (i.e., programming assignments) and a final project are eligible for a certificate. This is a self-paced course–you may take CS50x on your own schedule.

HarvardX requires individuals who enroll in its courses on edX to abide by the terms of the edX honor code. HarvardX will take appropriate corrective action in response to violations of the edX honor code, which may include dismissal from the HarvardX course; revocation of any certificates received for the HarvardX course; or other remedies as circumstances warrant. No refunds will be issued in the case of corrective action for such violations. Enrollees who are taking HarvardX courses as part of another program will also be governed by the academic policies of those programs.

HarvardX pursues the science of learning. By registering as an online learner in an HX course, you will also participate in research about learning. Read our research statement to learn more.

Harvard University and HarvardX are committed to maintaining a safe and healthy educational and work environment in which no member of the community is excluded from participation in, denied the benefits of, or subjected to discrimination or harassment in our program. All members of the HarvardX community are expected to abide by Harvard policies on nondiscrimination, including sexual harassment, and the edX Terms of Service. If you have any questions or concerns, please contact [email protected] and/or report your experience through the edX contact form.

What's inside

Learning objectives

  • 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

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Designed for individuals with and without programming experience, explicitly addressing non-majors as well as majors
Taught by David J. Malan, Doug Lloyd, and Brian Yu, recognized educators and practitioners in the field
Emphasizes the application of computer science concepts in various real-world domains, fostering practical problem-solving abilities
Involves hands-on experience through programming assignments and a final project, allowing learners to apply their knowledge and receive feedback
Offers a comprehensive introduction to computer science, encompassing foundational concepts and programming languages
Engages learners in a vibrant online community, fostering collaboration and peer support

Save this course

Save CS50's Introduction to Computer Science to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in CS50's Introduction to Computer Science with these activities:
Review Basic Programming Concepts
Strengthen your programming foundation by reviewing basic concepts such as variables, data types, control flow, and operators to ensure you are well-prepared for the course material.
Browse courses on Programming Fundamentals
Show steps
  • Go through your previous programming notes or textbooks.
  • Complete online tutorials or exercises on basic programming concepts.
  • Practice writing simple programs to reinforce your understanding.
Organize and Review Course Materials
Make the most of your course materials by compiling and organizing your notes, assignments, quizzes, and exams. This will help you stay organized, review effectively, and improve your retention of the material.
Browse courses on Study Skills
Show steps
  • Gather all of your course materials, including notes, assignments, and exams.
  • Create a system for organizing your materials, such as using folders or a digital note-taking app.
  • Review your materials regularly and identify areas where you need further understanding.
Form a Study Group with Classmates
Enhance your learning by forming a study group with classmates where you can discuss concepts, work on assignments together, and provide support to each other.
Show steps
  • Identify classmates who share your interests and learning goals.
  • Establish regular meeting times and a designated study space.
  • Set clear goals for each study session and divide tasks among group members.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Attend a Workshop on Web Development
Expand your knowledge and skills in web development by attending a workshop that covers topics such as HTML, CSS, JavaScript, or back-end technologies.
Browse courses on Web Development
Show steps
  • Research different workshops and choose one that aligns with your interests and learning goals.
  • Register for the workshop and prepare any necessary materials.
  • Attend the workshop, participate actively, and take notes.
Solve Coding Challenges on LeetCode
Sharpen your problem-solving skills and reinforce your understanding of algorithms and data structures by practicing coding challenges on LeetCode.
Browse courses on Algorithms
Show steps
  • Choose a coding challenge that is appropriate for your skill level.
  • Attempt to solve the challenge on your own.
  • Review the optimal solution and compare it to your approach.
Build a simple text editor
Enhance your understanding of user interface design, front-end development, and programming fundamentals by creating a basic text editor that enables you to type and edit text.
Browse courses on Text Editor
Show steps
  • Design the user interface for your text editor.
  • Implement the core functionality for text editing, such as typing, deleting, and copying.
  • Add features to your text editor, such as syntax highlighting or spell checking.
Build a Personal Portfolio Website
Showcase your skills and projects by building a personal portfolio website that demonstrates your proficiency in web development and provides a platform for you to present your work.
Browse courses on Web Development
Show steps
  • Design the layout and structure of your website.
  • Develop the front-end of your website using HTML, CSS, and JavaScript.
  • Create a back-end for your website if necessary, using a server-side language.

Career center

Learners who complete CS50's Introduction to Computer Science will develop knowledge and skills that may be useful to these careers:
Computer Scientist
Computer Scientists are problem solvers. They analyze problems, turn them into a set of instructions, then have computers perform the instructions. This course can help you gain a broad understanding of computer science, as well as how to think algorithmically and solve programming problems efficiently. It can also expose you to a variety of programming languages, include C, Python, SQL, and JavaScript, which many Computer Scientists use to solve problems in a diverse range areas, such as finance, forensics, data science, government, healthcare, and more. While the course description does not specifically list the role of Computer Scientist, its broad overview of computer science and programming can lay a foundation for careers in this field.
Computer Science Teacher
Computer Science Teachers educate students about computer science principles and concepts. They teach students how to think algorithmically and solve problems efficiently. This course can provide you with a broad understanding of computer science, as well as how to think algorithmically and solve programming problems efficiently. While the course description does not specifically list the role of Computer Science Teacher, its broad overview of computer science and programming can lay a foundation for careers in this field.
Web Developer
Web Developers design and build websites. They are responsible for the look, feel, and functionality of websites. This course provides a solid foundation in computer science principles, including web development concepts. You will learn about topics like HTML, CSS, and JavaScript, which are essential for Web Developers. This course may also be useful if you are interested in becoming a Web Developer because it will expose you to the fundamentals of computer science and help you gain experience in some important programming languages.
Database Administrator
Database Administrators are responsible for the performance, security, and maintenance of databases. This course provides a solid foundation in computer science principles, including database management concepts, which are essential for Database Administrators. You will also gain experience working with SQL, a programming language commonly used by Database Administrators to manage and query data.
Data Analyst
Data Analysts collect, clean, and analyze data to help businesses make informed decisions. This course provides a solid foundation in computer science principles, including data structures and algorithms, which are essential for Data Analysts. It also provides hands-on experience working with data using SQL, a programming language commonly used by Data Analysts to manipulate and query data.
Computer Systems Analyst
Computer Systems Analysts analyze and design computer systems to meet the needs of businesses. They work with users to identify their needs, then design and implement systems to meet those needs. This course will provide you with a foundation in computer science principles, including systems analysis and design, which are essential for Computer Systems Analysts. It also covers a variety of programming languages, including C, Python, SQL, and JavaScript, which Computer Systems Analysts often use to develop and implement computer systems.
Information Systems Manager
Information Systems Managers plan, implement, and manage information systems for organizations. They work with users to identify their needs, then design and implement systems to meet those needs. This course will provide you with a foundation in computer science principles, including systems analysis and design, which are essential for Information Systems Managers. It also covers a variety of programming languages, including C, Python, SQL, and JavaScript, which Information Systems Managers often use to develop and implement information systems.
Systems Analyst
Systems Analysts design and implement computer systems that meet the needs of businesses. They analyze business processes, identify areas for improvement, and then design and implement systems to address those needs. This course will provide you with foundation in many computer science principles, including systems analysis and design, which are essential for Systems Analysts. It also covers a variety of programming languages, including C, Python, SQL, and JavaScript, which Systems Analysts often use to develop and implement computer systems.
Information Security Analyst
Information Security Analysts plan and implement security measures to protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. This course will give you a broad overview of computer science principles, including security concepts, which are essential for Information Security Analysts. You will also learn about a variety of programming languages, such as C, Python, SQL, and JavaScript. Many of these languages are used by Information Security Analysts to develop and implement security measures.
Software Engineer
Software Engineers apply the principles of computer science to design, develop, deploy, and maintain software systems. This course is a great introduction to the fundamentals of computer science. It teaches you how to think algorithmically and solve problems efficiently. You will also gain experience in a number of popular programming languages like C, Python, SQL, and JavaScript. As a Software Engineer, you need to be able to work with many programming languages and understand a variety of different computer science principles, so the broad overview of this course may be very helpful. While the course description does not state the role of Software Engineer specifically, it may help you build a foundation for a career in this field.
IT Project Manager
IT Project Managers plan, execute, and close IT projects. They work with stakeholders to define project scope, develop project plans, and manage project resources. This course will provide you with a foundation in computer science principles, including project management concepts, which are essential for IT Project Managers. It also covers a variety of programming languages, such as C, Python, SQL, and JavaScript, which IT Project Managers often use to develop and implement IT projects.
Network Administrator
Network Administrators are responsible for the performance, security, and maintenance of computer networks. This course provides a solid foundation in computer science principles, including network management concepts, which are essential for Network Administrators. You will also gain experience working with a variety of programming languages, such as C, Python, SQL, and JavaScript, which Network Administrators often use to manage and maintain networks.
Data Scientist
Data Scientists use their knowledge of computer science, statistics, and mathematics to extract insights from data. This course will provide you with a solid foundation in computer science principles, as well as experience working with data using SQL, a programming language that Data Scientists use to manipulate and query data. While the course description does not specifically mention the role of Data Scientist, the course may be helpful as it will introduce you to fundamental computer science concepts and data analysis techniques.
Computer Programmer
Computer Programmers write and maintain the code that makes computers work. They turn ideas into reality by translating designs and specifications into instructions that computers can understand. While the course does not discuss this role specifically, it covers a number of essential programming concepts and gives students experience in various programming languages, including C, Python, SQL, and JavaScript, which may be attractive to potential employers.
Software Tester
Software Testers evaluate the functionality of software applications to identify and report bugs. This course will provide you with a foundation in computer science principles, including software testing concepts, which are essential for Software Testers. It also covers a variety of programming languages, including C, Python, SQL, and JavaScript, which Software Testers often use to develop and implement test cases.

Featured in The Course Notes

This course is mentioned in our blog, The Course Notes. Read one article that features CS50's Introduction to Computer Science:

Reading list

We've selected 16 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in CS50's Introduction to Computer Science.
This classic textbook provides a comprehensive introduction to the fundamental algorithms used in computer science. It valuable reference for students and professionals alike.
Provides a deep dive into the fundamentals of computer systems, including hardware, software, and networking. It valuable resource for students and professionals who want to understand how computers work.
Concise and accessible introduction to the core concepts of computer science, including algorithms, data structures, and programming languages. It valuable resource for students and professionals who want to quickly get up to speed on the basics.
Save
Provides a fascinating look at the inner workings of computers, from the hardware to the software. It valuable resource for students and professionals who want to understand how computers work at a deeper level.
Explores the ways in which computer science can be used to understand and improve human decision-making. It valuable resource for students and professionals who are interested in the intersection of computer science and human behavior.
Practical guide to refactoring code, which is the process of changing the structure of code without changing its behavior. It valuable resource for students and professionals who want to improve the quality of their code.
Classic guide to software project management. It valuable resource for students and professionals who want to learn how to manage software projects effectively.
Practical guide to managing software teams. It valuable resource for students and professionals who want to learn how to build and manage high-performing software teams.
Classic essay on the open source software development model. It valuable resource for students and professionals who want to learn more about the open source software development process.
This multi-volume book comprehensive guide to the art of computer programming. It valuable resource for students and professionals who want to learn more about the foundations of computer science.
Pulitzer Prize-winning exploration of the relationship between mathematics, music, and art. It valuable resource for students and professionals who are interested in the intersection of computer science and the humanities.
Collection of anecdotes and stories from the life of the Nobel Prize-winning physicist Richard Feynman. It valuable resource for students and professionals who are interested in the life and work of one of the greatest scientists of the 20th century.
Is an exploration of the role of uncertainty in our lives. It valuable resource for students and professionals who are interested in understanding the risks and rewards of uncertainty.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to CS50's Introduction to Computer Science.
Masterpieces of World Literature
Most relevant
Leaders of Learning
Most relevant
First Nights - Beethoven's 9th Symphony and the 19th...
Most relevant
The Einstein Revolution
Most relevant
Introduction to Bioconductor
Most relevant
Case Studies in Functional Genomics
Most relevant
Advanced Bioconductor
Most relevant
Tangible Things: Discovering History Through Artworks,...
Most relevant
Understanding & Preventing Workplace Sexual Harassment
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser