10 Best Computer Science Courses to Take in 2022

Elham Nazif

Are you looking for the best introductions to computer science? I’ve ranked the top courses available online, following a robust methodology. And they're all free to audit. You can read about it below.

But if you’re in a hurry, here are my top picks. Click on one to skip to the course details:

100–200 hours Comprehensive, super high-quality survey of CS.
70 hours Getting the problem-solving mindset and methods.
80–140 hours Comprehensive CS survey through the lens of Python.
40 hours Hands-on overview of CS fundamentals, like probabilities.
36 hours Survey of major CS topics, including networking.
40 hours Bottom up view of computer functioning.
36 hours Tech basics, if you aren’t ready for the main CS50.
25 hours Complexity and computability theory.
40 hours Comprehensive math overview for CS.
9 hours Great math intro if you’re starting from scratch.

What is Computer Science?

The definition of computer science is almost as broad as the definition of physics. So, to say that computer science is the study of computers and computing concepts is just as 'useful' as saying that physics is the study of nature and its phenomena.

Instead, I’ll tell you the main subfields of computer science that most universities include in their syllabus.

  • Computer architecture and organization naïvely ponders: ‘How do I design a computer?’
  • Programming steps in and questions: ‘But how will the computer understand the human?’
  • Operating systems interjects: ‘Hold on, how should the human interact with the computer?’
  • Data structures and algorithms chirps in: ‘After you've figured that out, how do we store and compute data efficiently?’
  • Networking and communication waits politely before inquiring: ‘So that’s all cool, but how can we make computers talk to each other?’

You get the gist. I’m sure you’ve had one of these intriguing thoughts pop up in your mind before. Luckily, these are the questions that computer science tries to answer.

By studying computer science, you can become a better programmer. Just as a veterinarian is likely to understand animals better than the average pet owner, by studying computer science, you can get a better grasp of the features, abilities, and limitations of these awesome code-running machines that we call ‘computers’.

Course Ranking Methodology

I followed a three-step process to build this ranking:

First , let me introduce myself. I’m part of Class Central , the leading search engine for online courses. I ( @elham ) built this ranking in collaboration with my friend and colleague @manoel , following the same approach we used with some success in our previous rankings of the best Python courses and best machine learning courses . At this point, I’d say it’s a pretty robust method.

We started building this ranking by looking at our database of 50K+ online courses . We were interested in things like ratings, reviews, and course bookmarks. This allowed us to make an initial selection. So this phase was purely data-driven.

This tentative first step rapidly helped surface some of the best options available out there. Word of mouth is very effective in online learning. Good courses get noticed. And the very best gather a lot of attention, and raving reviews.

That said, reviews don’t always tell the whole story. In fact, some courses are so good at grabbing the spotlight early on that other excellent resources can go unnoticed. So the next step was to bring our personal knowledge of online education into the mix.

Second , we used our experience as online learners to evaluate each of our initial picks.

We both come from computer science backgrounds and are prolific online learners, having completed about 45 MOOCs between us. Additionally, Manoel has an online bachelor’s in computer science , and I am currently completing my foundation in computer science.

Manoel gathered the courses while I wrote the article you’re currently reading. Throughout this process, we bounced ideas off each other and made iterative improvements to the ranking until we were both satisfied with the end result.

Third , during our research, we came across courses that felt well-made but weren’t well-known. If we adopted a purely data-centric approach, we would have to leave those courses out of the ranking, if only because they had fewer enrollments and ratings.

But no. This ranking is deliberately opinionated and holistic. When we felt confident that a course was worth including, even when the course might not yet have quite as many reviews as some of its competitors, we went with our gut and included it.

We also spiced up the list by including a wide variety of computer science courses that will hopefully cater to the diverse range of learners, whether you’re a true beginner or someone with some foundations in computer science, or an interest in specific topics like math.

After going through this process — combining Class Central data, our experience as lifelong learners, and lots of editing — we arrived at our final ranking. So far, we’ve spent more than 10 hours building this ranking, and we intend to continue updating it in the future.

Course Ranking Statistics

Here are some aggregate stats about the ranking:

  • In total, the courses in this ranking accumulated over 5 million enrollments with 2 courses having over 1 million enrollments each.
  • The most popular course in the list has 3.5 million enrollments.
  • All of the courses in this ranking are either entirely free, or free to audit.
  • With 4 courses each, edX and Coursera are tied for the most represented provider in this ranking.
  • Around 480k people are following Computer Science Courses on Class Central .

Without further ado, let’s go through the top picks.

1. CS50's Introduction to Computer Science (Harvard University)

Banner-2

My first pick has to be CS50's Introduction to Computer Science , offered by Harvard University on edX. Launched on edX in 2012, CS50 is the computer science course on the internet. It is famous for its splendid production quality and its yearly curriculum updates.

It provides a succinct but comprehensive overview of what computer science is all about. Whether you are a newbie who has never heard of ‘Hello World!’, or a programmer who knows a thing or two about computers, you’ll come out of this course having learned something new.

One Thing to Note

Although the course exercises come in two versions, easy and challenging, I found that even the easy exercises can be a bit tricky. If you know nothing about programming, I’d recommend you find someone to study this course with.

Fortunately, CS50 has one of the largest and most active course communities online: check their Discord .

Or if you’re looking for a shorter, more practical course, you might want to have a look at my Python ranking , which includes some gentler on-ramps into the world of programming.

The Instructor

We can't discuss CS50 without bringing up David J. Malan , the Harvard professor that teaches the course. Rarely has an instructor been so instrumental to the success of a course.

Beyond being an excellent educator, Prof. Malan is a true entertainer, with near-perfect delivery. And when you’re tackling an academic course that may take you dozens of hours to complete, having an instructor capable of capturing the learner’s attention makes a huge difference.

So if despite a sincere desire to learn, you find yourself falling asleep while taking online courses, this might just be the course for you. Prof. Malan’s energy is contagious!

What You’ll Learn

The course begins with the premise that computer science is, at its core, problem solving. It introduces you to binary, the fundamental language of computers, and explains how sequences of 1s and 0s can somehow represent text, images, videos, and even sounds.

You’ll learn that algorithms are step-by-step instructions designed to solve a problem. The most common type of algorithms you’ll deal with throughout the course are algorithms for sorting and searching , like bubble sort, merge sort, and binary search.

You may wonder, ‘What’s the point of having many different algorithms if they all do the same thing?’. This is when you’ll learn about measuring the efficiency of an algorithm with Big O notation .

The first programming language the course teaches is the beginner-friendly language Scratch. Through block-based coding, you'll use Scratch to illustrate fundamental programming concepts like functions, conditional statements, boolean expressions, loops, and variables.

Later in the course, you’ll notice that these fundamental concepts keep coming up time and again, since they can be found in pretty much every programming language that CS50 will teach you.

The course then removes your training wheels and drags you down into the depths of low-level programming languages. By “low-level”, I don’t mean “less valuable”. In computer science, low-level programming languages are languages that are close to machine code: the closer they are to machine code, the “lower” they are.

Assembly language is as close as we get to binary, and the course will briefly discuss it. But our first deep dive into traditional programming (writing lines of code instead of arranging colorful blocks like with Scratch) will be with C, a low-level programming language where you'll manage memory by hand and implement your first data structures.

You’ll learn that computers store data in sequences of locations in memory, and how computers can locate and access data with addresses and pointers. You’ll also learn about the different ways we can create and store lists of values, like arrays, linked lists, and trees.

You’ll compare the advantages and disadvantages of each data structure. For example, hash tables can be accessed in constant time, but require mitigating the risk of data collision.

You’ll then be brought back up to the surface towards “higher-level” programming, where you’ll be able to comfortably breathe as you begin working with Python, and continue jumping from topic to topic.

You’ll explore SQL, the programming language of many databases. The final weeks of the course culminate in you building and designing an interactive website with HTML, CSS, JavaScript, and a Python framework called Flask.

How You’ll Learn

The course is ten weeks long, plus an open-ended final project that might take an extra week (or more, if you want to work on something really ambitious).

The course is recorded annually on-campus at Harvard before being launched online the following Spring. While the recording is ongoing, you might be able to join via live stream with a hundred other learners, or if you live near campus, even attend in person — though the pandemic might preclude this for the foreseeable future. Otherwise, you’ll have access to on-demand recordings on edX or via Harvard OCW .

Regarding assessments, you’ll complete ten problem sets, eight labs, and a final end-of-course project that you’ll have to design and come up with yourself or with a team. You’ll be able to code and submit these via a convenient in-browser VS Code-based editor.

Harvard University
edX
David J. Malan, Brian Yu
Beginner
100–200 hours total
3.4M
Free and Paid (see below)

CS50 Lineup

A lot of people have heard about CS50’s Introduction to Computer Science, but not many realize that there are 10 other courses under the CS50 brand. A few follow-up courses worth mentioning are:

  • Introduction to Artificial Intelligence with Python
  • Introduction to Game Development
  • Web Programming with Python and JavaScript

What’s even better: many of these courses offer a free certificate. If you’d like to know more about the CS50 courses, and how to get a free certificate, you can read Manoel's CS50 guide .

  • The course instructor David J. Malan has been teaching CS50 for 15 years , first on-campus at Harvard, and on edX since 2012 .
  • CS50 has been bookmarked around 30k times and has over 100 reviews on Class Central.
  • Every year, CS50 organizes Puzzle Day , a friendly problem-solving competition where you’ll have the opportunity to collaborate with learners worldwide.
  • CS50 is a part of both our list of most-popular courses of all time and best free courses of all time .
  • David J. Malan was the founder and chairman of Diskaster, a hard drive and memory card data recovery firm. One of the exercises in the course is a nod to his previous work .
  • CS50 is the longest course on this ranking, owing to its comprehensiveness.

If you're interested in this course, you can find more information about the course and how to enroll here .

2. Computational Thinking for Problem Solving (University of Pennsylvania)

Banner-7

My second pick would be Computational Thinking for Problem Solving from the University of Pennsylvania on Coursera.

This course focuses on the skills underlying computer science  — computational thinking.

Computational thinking is the process of breaking a problem into parts, and then coming up with a resolution method that can be carried out by a computer.

Once you’ve embraced computational thinking, you’ll be in the right mindset to tackle additional computer science courses. So you could see this course as a foundation before the foundation. That said, if your interest lies in problem solving per se rather than CS as a whole, this course should also be a great fit.

You do not need any prior experience with computer science or programming to take this course, although some basic high school mathematics would be useful.

The course covers four main topics: computational thinking, algorithms, computer architecture, and Python.

First, the course outlines the four pillars of computational thinking. You’ll begin with decomposition, breaking down a complex problem into smaller, simpler problems. Then through pattern recognition, you’ll compare the problem to other similar problems that have been solved previously.

Afterwards, during data representation and abstraction, you’ll simplify the problem even more by identifying what characteristics of the problem are important and filtering out those that are not.

The last pillar of computational thinking, algorithms, forms the second section of the course. The course defines algorithms as a set of step-by-step instructions to solve a problem. With algorithms, you can teach the computer how to solve problems without explicitly telling them precisely how. Instead, your algorithm will be able to handle a number of different cases, as long as these satisfy some preconditions.

You’ll explore a variety of algorithms, like linear and binary search. You’ll learn how to represent algorithms with flowcharts, analyze the complexity of algorithms (Big O), and calculate the number of possible solutions to an optimization problem. Lastly, you’ll compare the benefits and limitations of common algorithmic approaches to problem solving.

The third part of the course gives a brief history of computers, before settling on the computer architecture used by modern computers — the Von Neumann Architecture. 

It consists of three fundamental units: the memory, CPU, and I/O. You’ll learn how data and instructions are stored and accessed in computers as bits and bytes, and also how executing code amounts to moving pieces of data in memory and operating on it in the CPU.

In the fourth and final section, the course will instruct you on the basics of Python programming. You’ll explore iterations, classes, and debugging. And you’ll end the course by coding your own Python program, where you’ll get to implement the algorithms you learned previously into code.

The course is 4 weeks long, with each week having about 18 hours of course material. You’ll learn primarily from video lectures, and after each video there’ll be a short quiz to test your recall. There is supplementary material available on math, for those not-so-confident in their mathematical abilities.

At the end of each week, you’ll be presented with a case study where you’ll see examples of computational thinking used to solve real-life problems. Afterwards, you’ll complete a project where you’ll apply what you’ve learned. Do note that the assessments in this course are for verified learners.

University of Pennsylvania
Coursera
Susan Davidson and Chris Murphy
Beginner
70 hours total
74K
4.7 / 5.0 (1K)
Paid
  • This course is endorsed by Google , which decided to make it part of its Digital Garage, a collection of courses and resources for learners wanting to gain tech skills.
  • Penn’s Prof Susan Davidson, the course instructor, was named a Fellow of the American Association for the Advancement of Science in 2021.
  • Prof. Davidson also teaches some of the courses of Penn’s Master of Computer and Information Technology (MCIT), which is offered online through Coursera.

3. Introduction to Computer Science and Programming Using Python (Massachusetts Institute of Technology)

Banner-8

My third pick for the best computer science course is Introduction to Computer Science and Programming Using Python , offered by MIT on edX.

This course approaches the field of computer science and programming through Python. The course focuses on breadth rather than depth, giving students background knowledge on the numerous applications of computation.

So this course is similar to our first pick in that it’s a survey course: it covers a lot, but not in great detail. But it’s dissimilar in that it focuses entirely on one programming language, Python, while Harvard’s course involves multiple languages.

Depending on your goals, this focus on Python could be seen as a positive or a negative. For what it’s worth, I believe Python is an excellent first programming language.

Heads up! This course tries to mirror the MIT on-campus experience, so don’t expect it to be a cakewalk. You won’t need any prior experience with computer science or programming to take it, but you’ll need a background in high school mathematics.

The main topics the course explores are computational thinking, data structures, iteration and recursion, decomposition, abstraction, and algorithms and complexity.

You’ll be given a brief introduction to computation and computational thinking. You’ll learn what computers are, how they work, and what their limitations are.

By understanding that computers only know what you tell them (and what they can infer from what you tell them), you’ll realize that in order for the computer to accomplish a task, they need a ‘recipe’ containing a sequence of instructions they should follow. This is what computer scientists call an algorithm.

Your programming journey begins by learning Python and its basic syntax. With Python, you’ll explore concepts common to most programming languages. These include variables, conditional statements, and control flows.

Furthermore, you’ll be introduced to functions and the role they play in decomposition, abstraction, and recursion, which are concepts fundamental to problem-solving in computer science.

By then, you should be able to code simple programs that can come up with approximate solutions to difficult math equations through a guess-and-check method.

Lastly, you’ll learn about the different ways we can represent information in Python, called data structures. You’ll work with lists, tuples, and dictionaries, and understand when to use one data structure over another.

The course is 9 weeks long with an expected workload of 14 to 16 hours each week. The main mode of learning is video lectures, and the course includes plenty of activities to put your hard-earned skills into practice. You’ll also have access to a learner’s forum where you can discuss with fellow learners.

There are 3 problem sets containing challenging coding exercises that will help you solidify your knowledge. If you are a verified learner, you’ll have to complete a timed mid-term and final exam in order to receive your certificate.

Massachusetts Institute of Technology
edX
John Guttag, Eric Grimson, Ana Bell
Intermediate
80–140 hours total
1.5M
Paid
  • This course has over 18k bookmarks and 120 reviews on Class Central.
  • It is the first of a two-course XSeries Program on edX. The second is Introduction to Computational Thinking and Data Science , which could make for a good follow-up.
  • One of the instructors, Professor John Guttag, leads the Data Driven Inference Group at MIT’s legendary Computer Science and Artificial Intelligence Laboratory (CSAIL).

4. Principles of Computing (Part 1) (Rice University)

Banner-4

Principles of Computing (Part 1), by Rice University on Coursera, is my fourth pick for the best computer science introduction. The course emphasizes doing rather than watching, requiring you to complete many coding assignments.

This course aims to help you step up your programming skills by teaching you computational problem solving, a skill that underlies computer science, and that was also the focus of our second pick . This will involve learning important programming practices and developing a mathematical foundation for problem solving.

To take this course, you’ll need to be comfortable with writing small (100+ lines) programs in Python, as well as have some background in high school mathematics. So this one doesn’t start from scratch, and is therefore geared toward learners that also have some basics down.

If you’re looking for a problem solving course with fewer prerequisites, you might want to have a look at our second pick .

The course includes refreshers on Python, code testing, probability and randomness, combinatorics, and function growth.

After a brief review of Python, the course will explain how to build tests, and why having tests for your Python programs can be useful.

Many programmers dislike or don’t simply bother to write tests for their code, but as one of the instructors explains, it’s a best practice worth treating as an integral part of the programming process.

Writing tests will help you save time and effort, and serves as a reusable sanity check that your program actually does what it’s supposed to do. For your first mini-project, you’ll recreate the well-known game 2048 in Python.

Then, the course moves on to the role of probability and randomness in computer science. You’ll learn how to identify unreasonable outcomes in probability, along with calculating the expected value of multiple outcomes.

For example, what’s the chance that a die would roll seven sixes out of ten tosses? And if that were to happen, to what extent could we conclude that the die is weighted — that is, that the rolls were unfair?

You’ll also see how we can use Python to simulate the probability of outcomes, a valuable tool used in statistical modeling. And for your second mini-project, you’ll work with probabilities to create an opponent that you can face in a game of Tic-Tac-Toe.

The course also touches on combinatorics, which deals with enumerations, permutations, and combinations. You’ll figure out how to calculate the total number of ways an event can play out.

This helps greatly in calculating the number of steps an algorithm would take, thereby allowing you to estimate the running time of the algorithm, and in turn, determine if the algorithm would be worth implementing. You can see why combinatorics plays a major role in password and computer security. For your third mini-project, you’ll code the familiar dice game Yahtzee .

In the final part of the course, you’ll be taught the importance of counting in solving complex problems. Counting answers the question of how long an algorithm might take to run given a task. Another name for counting you might be more familiar with is “time complexity”.

You’ll also learn about higher-order functions in Python, that is functions that take other functions as algorithms, like the map function. In your last mini-project, you’ll use these concepts to make your own version of Cookie Clicker .

The course is split into 5 weeks, with each week involving 7 to 10 hours of study. You’ll learn primarily through video lectures and graded assignments, although the course does supply supplemental notes and activities for further reading and practice.

You’ll code and submit the homework and mini-projects on their companion website CodeSkulptor , and in-browser code editor that will preempt the need of setting up a local coding environment.

Rice University
Coursera
Scott Rixner, Joe Warren, Luay Nakhleh
Intermediate
40 hours total
30K
4.7 / 5.0 (600)
Paid
  • The course has around 15k bookmarks on Class Central.
  • This course is the third of seven courses that make up the Fundamentals of Computing Specialization . Upon receiving the specialization certificate, you’ll have completed 20+ projects, including a capstone project.
  • If you’re not interested in taking a full specialization after this course, but you’d like to learn more about the course topic, as the course name implies, there’s a follow-up course: Principles of Computing (Part 2) .
  • Course instructor Prof. Scott Rixner is faculty director of two online degree programs at Rice University. So his dedication to online education extends beyond the scope of his own MOOCs.

5. Computer Science 101 (Stanford University)

Banner-5

Computer Science 101 aims to demystify the magic of computers by demonstrating that they work by following a few relatively simple patterns.

This course will help you become familiar with those patterns. It will give insights into how computers work and what their limitations are.

In addition, the course delves into networking and other major topics within CS. No prior knowledge of computer science required!

The course starts off with the fundamental equation of computers: Computer = Powerful + Stupid. Computers are powerful because they can perform billions of operations per second. But they are stupid because they need someone to tell them what to do. This is where programmers come into play.

This course uses small snippets of JavaScript to introduce you to programming and other computer science concepts. You’ll gain a grasp of programming concepts like variables, loops and iterations, conditional statements, and so on. The course later covers low-level and high-level languages, as well as compilers and interpreters.

The computer is a tool and the programmer wields the tool. Therefore, to program efficiently, it is important to understand how the tool works. The course covers many aspects of said tool, including hardware. You’ll learn about the parts that make up a computer, and look at how computers can represent different information formats.

The main format you’ll work with is images. One of the things you’ll do is “greenscreen” images as well as turn coloured images into grayscale by operating at the individual pixel level.

Another topic the course covers is computer networks, which is how computers communicate with one another. You’ll learn about the different types of networks.

You’ll study what IP addresses are and how they allow computers to locate each other. The course discusses how computers transmit information through data packets, and also the communication protocol the Internet runs on  —  TCP/IP.

The course also briefly covers a variety of other topics like databases and spreadsheets, computer security, and analog and digital data.

The course is 6 weeks long, with each week taking 4–6 hours to complete. Lessons are provided through video lectures and are supplemented with notes and assessments. However, you’ll need to be a verified learner to access the assessments.

Stanford University
edX
Nick Parlante
Beginner
36 hours total
100K
Paid
  • The instructor acknowledges Google for supporting his early research into creating the class. I think this goes for all of us!
  • This course has 3k bookmarks on Class Central.
  • The course instructor Nick Parlante’s current interest is in CodingBat Java , an experimental online code-practice tool.

6. How Computers Work (University of London)

Banner-6

This concise course taught by the University of London on Coursera touches on a few key topics in computer science, but it is mostly interested in helping you build a foundational understanding of hardware. It’s in the title really: by the end of the course, you’ll know how computers work.

And through that understanding, you’ll also form a clearer picture of how computers can be leveraged to help solve everyday problems.

The course is just as suitable for someone wanting to build solid foundations for further study in CS, as it is for someone simply curious about how computers work and wanting to explore some key CS topics but not necessarily a deep dive.

You do not need any prior knowledge of computer science to take this course.

This course covers computer hardware, abstraction, modularity, computer networks and communication.

The course begins with abstraction — the art of drawing attention to the important details while filtering out the noise. Many disciplines rely on abstraction, and computer science does so heavily, both at the hardware and software levels.

This concept will become apparent when the course starts discussing computer hardware, like memory, CPU, and other devices. You’ll use notional machines as means for capturing these abstractions.

Afterwards, you’ll move on to another key idea: state and modularity. This will help you answer the question, ‘Why does turning off and on my computer fix most problems?’

Using notional machines, you’ll explain how computer applications function by transitioning through different states, and how modularity allows them to interact with other applications. You’ll learn how to debug stuff, a very useful skill indeed.

Moving on, you’ll learn how computers talk to one another over the Internet through networks and communication protocols. You’ll also learn about the kinds of security threats computers (and users) face, and how to protect yourself from malicious actors.

Lastly, you’ll explore basic web development. By applying your new-found knowledge of abstraction, state, and modularity, you’ll be able to clearly understand how websites work.

The course is 4 weeks long, with 10 hours worth of material per week. It consists of video lectures and quizzes to test your knowledge of the material. You’ll have the chance to share your thoughts in discussion prompts.

University of London
Coursera
Marco Gillies
Beginner
40 hours total
25K
4.6 / 5.0 (440)
Paid
  • The course instructor, Prof. Marco Gillies , is the Academic Director of Distance Learning at Goldsmiths, University of London.
  • This course is an introduction to the University of London’s Online Bachelor of Computer Science , offered on Coursera.
  • It is course two out of three of the Introduction to Computer Science and Programming Specialization , with the first course being Introduction to Computer Programming .

7. CS50's Understanding Technology (Harvard University)

Banner-1-1

This is another course from the CS50 family. But unlike our first pick, which is the main CS50 course, this course is for those who work with technology everyday but don’t understand how it all works under the hood or how to solve problems when something goes wrong. And it’s also for those who don’t (yet) work with technology — most notably, computers — but would nonetheless like to understand its functioning.

The course aims to fill in the gaps in your knowledge of hardware, internet, multimedia, programming, and web development, preparing you for the technology of today and tomorrow.

This course has no prerequisites.

The course begins with an introduction to the language of computers, binary. It explains how computers use binary to represent text and other information. Then, you’ll move on to the hardware of the computer: CPU, RAM and Main Memory. You’ll learn about the functions of each of these components.

The course discusses Internet and multimedia, and the technologies underpinning them. It’ll tell you how computers can find and talk with one another. You’ll learn about the common Internet protocol TCP/IP and more.

You’ll learn about the different data representations of multimedia, like audio, images, and video. There are many file formats and compression techniques – the course will give you an overview of some of the main ones.

Next, you’ll be taught how to stay safe on the Internet. You’ll discover several ways to protect your data and privacy. This section will include lessons on cookies, passwords, two-factor authentication, encryption, and more.

You’ll continue with the basics of web development. You’ll learn how web browsers access the web with HTTP requests. Have you ever seen a 404 or 500 error when trying to visit a webpage? You probably have. Well, in this course, you’ll learn what these errors mean. A brief overview on the languages that allow us to build and style web pages, HTML and CSS, is provided.

Last by not least, you’ll discover the basics of programming. You’ll primarily use the block-based language Scratch to explore concepts common to pretty much all programming languages, like variables, expressions, loops, and so on.

Additionally, to demonstrate what an algorithm is (and more specifically the divide-and-conquer paradigm ), you’ll watch the instructor tear a phonebook into halves… I had to mention this because it is both very instructive and memorable!

The course is 6 weeks long, with each week taking 2 to 6 hours to complete, depending on your prior familiarity with the content. Each week contains at least one hour of lecture.

Regarding assessments, you’ll have to complete an assignment for each of the six topics presented in the course to earn a certificate.

Harvard University
edX
David J. Malan
Beginner
36 hours total
100K
Free and Paid (see below)
  • After taking this course, you’ll be more than ready to tackle CS50, our #1 pick .
  • This course has 1.6k bookmarks on Class Central.
  • Another fact about David J. Malan, the course instructor: he is an active member of the SIGCSE , the arm of the ACM concerned with computer science education.

8. Intro to Theoretical Computer Science (Udacity)

Banner-2-1

For those who have some familiarity with programming and algorithms, and want to further their understanding of problem-solving in computer science, this rigorous but insightful course might be what you’re looking for.

Offered by Udacity, Intro to Theoretical Computer Science explores what makes a problem ‘hard’ to solve, even for a computer. Then, it shows how to reduce and simplify these ‘hard’ problems to make them easier to solve through computation.

The course covers two main areas of theoretical computer science: complexity theory and computability.

Complexity theory asks how much of its resources, like time or memory, will a computer require to solve a problem. Computability, on the other hand, asks if a computer can solve a problem at all, even when given more time and memory.

The course introduces you to a variety of real-world problems from telecommunication, bioinformatics, and finance. You will recognize what makes a problem challenging, and the value of recognizing such problems. This will prime you for understanding what NP-completeness is. Then, you’ll understand what makes a problem ‘hard’ to solve, and be able to prove it.

The rest of the course discusses what to do with the problem once we’ve proved that it is hard (or even impossible to solve).

One of the ways to overcome this obstacle is to employ efficient, intelligent algorithms. Another way is to accept that the problem may not be perfectly solvable, and instead find an approximate solution. And yet another way is to use randomness and probability to poke around and find a solution.

You’ll be able to describe and use these techniques in practical situations: the course discusses the theory but it’s also hands-on.

Lastly, you’ll move on to problems that no computer can ever solve in theory. You will learn about undecidability and recognize the limits of computability.

The course is 8 weeks long, with a total 14 hours of video lectures. Some videos have a quiz to help you practice recalling what you’ve learned. There are 7 chapters, and at the end of each chapter you will complete a problem set to put your new-found skills to good use.

Finally, there’s a summative exam at the end of the course.

Udacity
Sebastian Wernicke, Sean Bennett, Sarah Norell
Intermediate
25 hours
None
  • This course has 2.2k bookmarks on Class Central.
  • One of the course instructors, Sebastian Wernicke, has spoken multiple times at TED .
  • To tackle this course, you may want to learn about algorithms first. The instructors recommend another Udacity course on algorithms as a refresher. In addition, good math foundations would be useful too. Check our picks below if needed.

9. Mathematics for Computer Science (University of London)

Banner-3

Offered by the University of London, this course introduces you to the mathematics and mathematical thinking computer scientists use in their work. What distinguishes this course from other math courses is its playfulness, with fun and interactive exercises.

More specifically, the course combines elements of algebra, analysis, and geometry — topics carefully picked to serve as the backbone of your computer science education.

The course discusses, among others, number bases, an essential topic to understand binary, and conversion between binary and other bases, such as hexadecimal. It explores numerical progressions, like the well-known Fibonnaci sequence. And it will touch on geometry and function graphing.

By the end of the course, you’ll have acquired the foundation needed to understand the math that underpins other computer science courses, and you’ll be ready to tackle more advanced mathematical topics.

The course assumes you know some high school mathematics as well as basic Python programming.

The course investigates five main topics: number bases, modular arithmetic, sequences, series, graph sketching and kinematics.

The course begins with the study of number bases. You might know that binary is the number base used by computers. But did you know that computer scientists also use hexadecimals?

You’ll cover the key concepts of place values and number systems, which will involve converting between binary, hexadecimal, and decimal, as well as adding, subtracting, and multiplying them together. Oh, a cool thing that the course teaches you is steganography, the art of hiding messages in images!

Next, you’ll cover modular arithmetic. Have you ever wondered what “modulo 7” means? You’ll learn about the usefulness of congruence and modular arithmetic operations in computer science (psst, it can be used for encryption).

You’ll identify, describe, and compute sequences of numbers and their sums. You’ll study a special family of sequences called progressions, which consists of arithmetic and geometric progressions. You’ll learn how sequences can be used to generate random numbers. Additionally, you’ll be able to tell when a series converges (meets at a point) or diverges (approaches infinity)

Lastly, the course describes how to represent and describe space numerically using coordinates and graphs. You’ll see how graphs can help us visualize and transform functions like straight lines, quadratics, cubics, reciprocals and more. An example of modeling motion will be given: the field of mathematics called kinematics.

The course is 6 weeks long, with about 40 hours worth of material. Each week comes with one or more quizzes, allowing you to learn by doing. However, you’ll need to pay for the certificate for the course autograder to mark your answers.

University of London
Coursera
Matthew Yee-King and Sara Santos
Beginner
40 hours total
22K
4.1 / 5.0 (200)
Paid
  • It is the third and final course of the Introduction to Computer Science and Programming Specialization .
  • Dr. Sara Santos enjoys math busking , which seeks to surprise and amuse people on the streets with performances rooted in math.

10. Mathematics for Computer Science: Essential Skills (University of Hull)

Banner-9

If you have taken a look at the previous two courses but do not have the mathematical foundations to take them yet, this course can help you with the basics.

This course is a short course on mathematics skills for computer science, offered by the University of Hull on FutureLearn.

Meant for learners starting or considering studying computer science at the university level, this course covers Venn diagrams and set theory, algebra techniques, and vectors and matrices — all fundamentals concepts ubiquitous in computer science.

The course assumes no prior mathematical knowledge. You’re starting from scratch.

Starting off with Venn diagrams and set theory, you’ll learn how “sets” (bags of objects, if you will) can be formalized and operated on. You’ll learn to reason about computations and objects of computation. Venn diagrams will help you visualize this type of reasoning.

You’ll then move on to algebra and its techniques. You’ll be given an overview of algebra (which could be described as doing math using variables instead of explicit numbers) and its use in algorithms and scientific computation. The course will teach you how to solve linear equations and quadratic equations using algebra.

The course ends with an overview of vectors and matrices. You’ll learn what vectors are, and why they are especially important in graphics programming. You’ll learn how we can represent vectors as matrices, and how to modify, transform, and invert matrices to solve complex problems.

This course is 3 weeks long, with around 3 hours of material per week. You’ll learn primarily through video material, although there are discussion forums where you can discuss problems with fellow learners.

At the end of each week, there is a quiz that’ll help you strengthen your understanding of mathematical concepts and applications.

University of Hull
FutureLearn
Laura Broddle
Beginner
9 hours total
1.2K
Paid
  • The course instructor, Laura Broddle , joined the University of Hull in 2015 as a foundation math teaching fellow.
  • She also had visited a sister school in Uganda and was rated an outstanding teacher by Ofsted in 2013.

Part-time content writer for Class Central, full-time computer science student.

If you read this far, thank the author to show them you care. Say Thanks

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

To log in and use all the features of Khan Academy, please enable JavaScript in your browser.

Computer science theory

Advanced concepts in computer science: explore theory and application, unit 1: algorithms, unit 2: cryptography, unit 3: information theory.

A-Plus Homework Help For College Students

Computer Science Coursework Examples & Study Documents

Get access to our online database of Computer Science Coursework writing samples.

Get inspired with 750,000+ our samples

Find Writing Inspiration in Our Data Base

Trust and Reliability in Engineering

It is therefore essential to make sure that the involved parties have…

Words : 1048 Pages : 4

IT Governance Planning

No matter the source of information, firms have to come up with…

Words : 587 Pages : 3

Productivity Excelling Designing and Rewarding

For instance, if a team is supposed to accomplish a large project…

Words : 548 Pages : 3

Intellectual Property Essay

Patents and trademarks are given to particular research organization and designs to…

Words : 414 Pages : 2

Heuristic evaluation of Shorewood swim club

Below is the summary of my findings. Positive Findings • The information…

Words : 813 Pages : 3

PC or a Tablet

In terms of portability, tables are arguably more portable than computers due…

Words : 361 Pages : 2

The Influence of Environment on Learning of Children

It is during these early stages when children brains develop synapses that…

Words : 2143 Pages : 8

The political right wing in America

The political right also increased the voices of the modern conservatives. This…

Words : 1527 Pages : 6

The Case for Better Traffic Management

V. , Mukherjee, S. , & Song, H. 2010, June). For instance,…

Words : 477 Pages : 2

Cisco network system Essay

W. F. , & Poelman, R. Its efficiency is another feature that…

Words : 439 Pages : 2

Essay on Nursing

The knowledge of the foundations and history of nursing provide a context…

Words : 456 Pages : 2

Language acquisition Essay

It can be monitored when children are in their social environment inform…

Words : 1687 Pages : 7

Mobile Analytics Essay

The mobile experience is gained from the mobile platforms that help in…

Words : 393 Pages : 2

My Nursing Philosophy Essay

As a calling, one only needs to accept it and do what…

Words : 1838 Pages : 7

What can early childhood educators today learn from Rousseau

Through this perspective from Rousseau, it creates an understanding that children are…

Words : 710 Pages : 3

What can we learn from Pestalozzi

Pestalozzi focused more on the inclusion of poor children in public education…

Words : 713 Pages : 3

What teaching methods did Comenius support

Comenius main agenda was to make learning experiences widely developmental, natural, holistic,…

Words : 667 Pages : 3

Difference between traditional and progressive education

In this view, progressive education is mainly supported by educational professionals whereas…

Words : 653 Pages : 3

What is кights integrative approach to early learning

Ideally, the framework recognizes children as children with rights, complete tenants, with…

Words : 592 Pages : 3

REIMAGINING CHILDHOOD Essay

When children are playing their creativity is at its peak. By telling…

Words : 593 Pages : 3

Personal Information Identifier Policy Facebook Inc

As free access social media platform, Facebook manages to maintain profitable operation…

Words : 601 Pages : 3

Functional Behavior Assessment

C stand for in a functional assessment? The functional assessment uses the…

Words : 1195 Pages : 5

Function of user profiles

User accounts record information such as username, the password used, permissions assigned…

Children and Outdoor Activity

The specific concern is the changes in modern societies that are affecting…

Words : 1270 Pages : 5

Chronic Kidney Disease Essay

Loss of functions of the kidney will result in the accumulation of…

Words : 949 Pages : 4

Restorative justice essay

The main offenders involved in it can be family members or people…

Words : 410 Pages : 2

Target Canadas Case Study

The business concentrated on its expansion in Canada by spending billions of…

Words : 993 Pages : 4

Left Sided and Right Sided Heart Failure Their Pathophysiology and Possible Treatment

Apart from medications, lifestyle changes have been termed effective as part of…

Words : 1688 Pages : 7

Security assessment Motor online taxi operation system for company ABC

There has been an increase in the digitization of taxi operations, with…

Words : 3208 Pages : 12

INTERIOR GATEWAY ROUTING IGP Essay

IGP implementation is focused to be used in gateways that are connecting…

Words : 1799 Pages : 7

Workshop report

The standards that are related to achieving usability of a system can…

Words : 1761 Pages : 7

Asthma and Stepwise Management

Management, as such, takes into account the two ideals, while at the…

Words : 703 Pages : 3

Diabetes and Drug Treatments

When not managed, diabetes has been known to cause various complications such…

Words : 1267 Pages : 5

Information Technology Disaster Recovery Plan

Furthermore different risks that may target the organizations well-being whether internal external…

Words : 1491 Pages : 6

Artificial intelligence in health and healthcare

Case studies 5 1. Use of Human intelligence in making a decision 5 1. AI in…

Words : 4425 Pages : 17

Evaluate websites using the Web Design Best Practices Checklist

amazon. com Audience: al internet shoppers Subject: The largest online retailer company Developer: Amazon…

Words : 1099 Pages : 4

The development and deployment of an online real estate website with Aaron OReilly

The development process had to take care of several web development techniques,…

Words : 971 Pages : 4

Application of Gardners Theory of Multiple Intelligences

The POMAT technique is reliant on the idea of “backward learning” where…

Words : 375 Pages : 2

Plan to Outsource Software Developers to India

Regardless of the many benefits that may be realized, a few challenges…

Words : 2314 Pages : 9

Childrens Functional Health Pattern Assessment

Hand washing as well as teeth brushing are highly parent dependent and…

Words : 3482 Pages : 13

What team leader management style would be effective in leading a team in which you were a member

Charismatic leadership is a style of leadership usually for encouraging others behavior…

Words : 312 Pages : 2

Recovery plan for hurricane disasters

Hurricane disasters might occur at random places since they are unpredictable and…

Words : 704 Pages : 3

Emergency Situations Likely To Occur During a Recovery

Such needs include clothes, food, and shelter. Also, one is also advised…

Words : 332 Pages : 2

Problem isolation troubleshooting

The best assumption in this case would be there must be type…

Words : 461 Pages : 2

Artificial Intelligence Essay

Therefore, computers have made the life of a human being easier and…

Words : 1029 Pages : 4

Bar Codes versus RFID

While on the other hand Bar Codes make use of the Scanners…

Words : 1121 Pages : 4

WAN Technologies Essay

According to (Mitchell, 2018), long-separate, point-to-point Ethernet connections can be utilized to…

Five Forces Model of Coca Cola Company

Other soda brands emerging in the market due to their unique flavor…

Words : 797 Pages : 3

Essay on Routers

These devices allow multiple computers to join a common network. A router…

Words : 338 Pages : 2

Cisco Error Messages

b) Error Message %AAA-3-BADCURSOR: invalid cursor index %d max %d service %s…

Words : 344 Pages : 2

Nursing Informatics Implementation Managerial Paper

It has also promoted patient-centred care and home-care services. It has also…

Words : 1828 Pages : 7

Heart Failure Clinic Care Plan

Moreover, they have to make decisions that affect patient outcomes as well…

Words : 893 Pages : 4

Heart Failure Clinic Resourcing Plan

However, this can only be achieved through evidence-based management strategies that ensure…

Words : 939 Pages : 4

INTERNET OF THINGS ON WIRELESS NETWORK

In context with internet of things, there is use of wireless sensor…

Words : 3020 Pages : 11

Childcare Case Study

Green is fear. Her fear of informing the center of Harry’s development…

Internet Protocol Security essay

Primarily, IPsec described two methods for enforcing security on Internet Protocol packets…

Words : 943 Pages : 4

DBMS for a school seting

I chose a school setting to build my database I chose a…

Words : 914 Pages : 4

Firewall Security Concerns and Mitigation Strategies

However, some issues or threats arise with the use of firewalls hence…

Words : 792 Pages : 3

Development of Internet Usage and Email Policy

All medium-sized financial companies need to have workable cyber guidelines that make…

Words : 1175 Pages : 5

Apple chief executive officers

Amazingly, 15 years later after Job departed as the CEO, the market…

Words : 551 Pages : 3

Conflict resolution

It is a common belief that doctors are the ones to give…

Words : 928 Pages : 4

Computer science coursework

Programming will be found so as the scene of incidence can be…

Words : 4678 Pages : 18

Why was the system found to be too complex and difficult to use

Lack of prior consultation also made the system complex to use. The…

Words : 424 Pages : 2

Multi paradigm programming

There are several advantages of using languages that support multiple paradigms while…

Words : 372 Pages : 2

Data gathering and evaluation

If you agree to take part in this study, you will be…

Words : 433 Pages : 2

Ethical dilemma

The management provided was not providing any much relief to his condition…

Words : 1733 Pages : 7

Protecting your scope of practice

Due to the fundamental role of APRNs the ANA came up with…

Words : 711 Pages : 3

Sql queries coursework

SELECT SALES. STUDENT_ID, SALES. STATE, SALES. YEAR, SALES. ITEM, SALES. b SQL…

Words : 396 Pages : 1

Patient care coursework

The patient on discharge was prescribed Norvasc and Metoprolol. The pharmacy unknowingly…

Words : 892 Pages : 4

Tuberculosis coursework

Other high-risk populations for TB infection include people with poor immune systems…

Words : 945 Pages : 4

Network design and troubleshooting

A computer network differs in the transmission media used to carry their…

Words : 2087 Pages : 8

Pharmacokinetics and pharmacodynamics essay

According to Stephenson (2005), most basic physiological and cellular processes as well…

Words : 670 Pages : 3

Asthma action plan coursework

In managing patients with asthma, an asthma action plan is imperative. An…

Words : 672 Pages : 3

Cloud computing article critique

Other things offered include real-time monitoring of how power is used and…

Words : 706 Pages : 3

Rationale on dissemination strategies

The findings will be implemented depending on the dissemination degree. In this…

Words : 538 Pages : 2

The impact of robots in the industries

It is mainly involved in manufacturing molds, which produce plastic and metal…

Words : 542 Pages : 2

Women and mens health infections and hematologic systems

Generally, this paper will address the potential patient’s current therapy plans based…

Words : 635 Pages : 3

CS50: Introduction to Computer Science

An introduction to the intellectual enterprises of computer science and the art of programming.

CS50x

Associated Schools

Harvard School of Engineering and Applied Sciences

Harvard School of Engineering and Applied Sciences

What you'll 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 with 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

Course description

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.

Instructors

David J. Malan

David J. Malan

Doug Lloyd

You may also like

CS50W

CS50's Web Programming with Python and JavaScript

This course picks up where CS50 leaves off, diving more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap.

CS50L

CS50 for Lawyers

This course is a variant of Harvard University's introduction to computer science, CS50, designed especially for lawyers (and law students).

Random walks generated using Python 3

Using Python for Research

Take your introductory knowledge of Python programming to the next level and learn how to use Python 3 for your research.

Join our list to learn more

Think Student

75+ A-Level Computer Science NEA Ideas (and why they’re good)

In A-Level by Think Student Editor March 9, 2019 6 Comments

Computer Science at A-Level is sometimes misunderstood as being a subject where all you do is sit in front of a screen, coding away in Python, trying to build the next Google. While a lot of your time is spent staring at a computer screen, it’s not just about coding.

There is a theory side to Computer Science which plays a big role in determining what grade you get at the end of your two years. Your NEA will take a lot of analysis, planning and trial and error which many students do not expect. That’s why below I’ve provided a long list (in no particular order) of project ideas so at least one step is taken out of the equation. You can combine some of these ideas and create a Frankenstein-type project or maybe just take one and make it your own.

Remember, refer to the mark scheme to ensure you hit as many A-Level Computer Science skills as possible. It’s always worth taking a look at your relevant specification to see which skills you want to showcase, you can find specifications for OCR and AQA here. Without further ado, let’s get to it.

1. Maze Generation Software

There are many different algorithms that you could implement when programming a maze generator (like a lot). So, if you want a list on the different algorithms you could possibly implement, check out this article.

2. Rubik’s Cube Solver

This is probably the hardest project idea on this entire list – in terms of the actual implementation. Creating AI that can actually learn how to solve the Rubik’s cube is very, very difficult.

The good news however, is that I don’t think examiners will expect you to create AI that learns how to solve the Rubik’s cube entirely by itself. Therefore, if you do choose this idea, I highly recommend that you program your AI around one of the many pre-existing algorithms that have been created to solve Rubik’s cubes.

In my opinion, this is the best algorithm for you to base your AI around.

3. Bird Migration Pattern Predictor

If you actually pull this one off, I would eat my foot if you didn’t get top marks (an A*).

For this project, you will need to analyse how birds have migrated across the globe in the past. Then you will need to try and find correlations between migration patterns and geographic weather conditions. From this data, your program could predict future migration patterns depending on different climate changes.

I think a great start for this idea is to read into what web-scraping is and how to do it.

4. Nuclear Power Plant Meltdown Simulation

While programming this project, you would have simulate real world conditions. After you have created this Earth-like environment, you can model the effects that a nuclear power plant meltdown would have on said environment.

You could even add cities to see the affects that radiation would have on them too.

5. Supermarket Stock Management System

Supermarket’s not only need to manage stock, but also staff – both of which, they have lots of. This means that there is most definitely an opportunity for you to make a complex system that could aide a supermarket.

If you do choose this, make sure you read up on how a supermarket actually operates, so the system is suitable. There’s a great document here that should tell you all you need to know about managing a supermarket (and a lot more).

6. Restaurant Point Of Sale (POS) System

A point of sale system is very different to a stock management system (as you would find in a supermarket). The difference is that a point of sale system is used (guess what) at the “point of sale”, meaning staff will use the system at restaurant tables when taking food orders.

Therefore, you must make sure your POS system has an extremely friendly user interface, as customers don’t like waiting around!

7. Chess Playing AI

I don’t think I need to tell you that this is going to be challenging… Therefore, if done right, this could lead to a well earned A* for your NEA.

There are so many resources to help you develop this particular project idea online. So, whenever you get stuck, you will never be far away from help.

8. Image Recognition AI

I reckon this is probably equally as difficult as the Rubik’s cube one – AKA very, very hard.

This idea should be screaming at you: “machine learning and neural networks”. If it’s not, there might be something wrong with you…

Neural Networks + Machine Learning = High Marks

There are loads of free online resources that will help you a ton. However, I highly recommend that you get this book off Amazon.co.uk , it is the best book on getting started with neural networks that I have ever read – just going to have to trust me on this one.

9. Evolution Simulator

This project has the potential to be seriously complicated, however, you could also make it quite simple. It all depends on what’s evolving.

If you are going to simulate how animated stick figures get better at running over many generations, your program is going to be very complex. However, if you are going to simulate how a single-muscled slug can get better traveling between points as quickly as possible then it could be quite simple.

If you’re even considering this project, then you should definitely check out this YouTube playlist (it’s strangely satisfying watching his imaginary creatures evolve).

10. Voice Recognition AI

This project is (obviously) very similar to the image recognition project that was aforementioned. Therefore, this project too, should be screaming “machine learning and neural networks” at you.

I’ve never really programmed a voice recognition AI before, therefore, I can’t really recommend any specific books for you to get (as I can’t be certain of their quality). However, I have done a quick google search and within 5 minutes I can tell that there is shed loads of information on this topic, so on that front – don’t worry.

11. Sales Order Processing System (SOP)

An SOP system should, as the name suggests, manage sales. This means it should control the majority of communications between the warehouse, sales team and the client.

Below are things that a typical SOP system could do:

  • Store Order History
  • Generate Invoices
  • Generate Reports
  • Generate Delivery Notes
  • Send Reminder Emails

You are tied down a bit with this project, as you do have to make sure a factory could actually use this software. However, there are still many different avenue’s for you take with the types of functionality you decide to implement.

12. Poker Game

For you to do this project, you would have to be fairly confident with networking. This game would allow multiple devices to join a “table” and start playing poker with each other.

Depending on how complex you want your program to be, you could add so many extra features. I think a great extra feature for this project would be to calculate the odds of someone winning per hand. Furthermore, you could also add a computer poker player (where you could definitely implement some AI).

13. DJ Software (Can Mix Music)

This one is definitely a fun project for those of you who have an affection for music. This project would clearly require you to learn a shed load about manipulating audio files, however, if you can pull it off I think you could really make a project that is A* worthy.

You could also build a control system which could implement the software. This might cost a bit of money, but once again, it’s going to make you like you really know what you’re doing.

14. Interactive Circuit Builder

If you want to know what I’m on about, get the free trial of Logicly or just go on YouTube and look at a video of someone else using Logicly.

Assuming you have done that, you will know what I mean by an “interactive circuit builder”. I would say that the most important aspect of this project would have to be the UI. Without a good user interface, the software would not be fit for purpose and you would definitely lose marks.

15. Quiz App

You could either make an offline quiz app or you make a much more complex client-server quiz style app. There is definitely much more opportunity to get an A* with the latter of those options.

If you decide to do a client-server model, I think a real time quiz app would work great – something (even remotely) similar to Kahoot would really stand out.

16. Software for Calculating The Big O of an Algorithm

Examiners will absolutely love this one, but why?

Because in doing this project, you would be making a computer science theory topic actually come to life. Therefore, if you do this project, you are showing to the examiner that you can get a concept off paper and actually make use of it in a real situation.

Besides that, this project is amazingly complex and will certainly provide you with plenty of opportunity’s for you to incorporate A* level concepts into your program.

If you have forgotten what Big O is, don’t worry (you should worry a bit actually) and just go give this a read.

17. Tracking And Monitoring Global Shipping Routes

This project is going to require you to get comfortable with web-scraping and API’s. You will need to be able to gather information about the global whereabouts of cargo ships frequently.

Once you have mastered the back-end tracking, you will need to think of a nice way to present the data. Maybe you could use certain programming libraries to make route representations on a global map?

18. Implementation of Machine Learning To Maximize Profits At An Airport

This could be my favorite project idea on here.

The lengths that airport companies go to when designing the layout of a particular airport is crazy. Everything is where it is for a reason: the route you take to board a plane, where you wait to board and the even where the security is. If you want more information about how airports maximize profits, check this out.

If you choose this project, I think you should do a simulation where people are represented by a particular sprite, shape or whatever you choose, and then they you follow them through the airport. After each day you could track the profits that the airport made.

Now this is where machine learning comes in… you could implement an algorithm that changes the layout of the airport each day and see if profits increase or decrease. Then the program would learn accordingly.

19. 3D First Person Shooter Game

Although many people choose to program a 2D game for their NEA, I think that programming a 3D game is just… better. Programming in 3D makes it so much easier for you to implement A* level programming techniques.

20. Implementation of AI To Model The Effects of Global Warming

Global warming is becoming an ever increasing issue in today’s world – so this project certainly checks the box “assists with a real world problem”.

Anyway, designing a program (using AI) that can attempt to predict what the effects of climate change are going to be on the planet is a great idea. It’s complicated enough, time-consuming enough and definitely “real worldy” enough.

A great place to start with this project is to check out the currently predicted effects of climate change, which you can find here.

21. Encrypted Instant Messaging App

An instant messaging app is one thing, but an encrypted instant messaging app is a whole different thing. This project is great because it just ticks so many boxes. You will be covering encryption and client-server networking in the same project!

Before you start this project, make sure you take out the different types of encryption methods (you can find some here).

22. E-Commerce Web App

Almost every single large company out there now has an online e-commerce website. Therefore, there is going to be plenty of helpful resources out there for you to learn from.

This project will also require some encryption as you will be dealing with payment methods such as debit and credit cards, which are VERY much confidential information.

23. Fitness Monitoring App

Programming a fitness app will allow you to actually interact with the hardware that is on the phone. For example, you could have a fitness app that tracks footsteps, in which case you would need to directly communicate with the phones pedometer.

24. Virtual Flashcard App

This can be a great project, if done right.

You’re going to have to get very good at databases if you do this project as a virtual flashcard app would require crap loads of them. A great example of a virtual flashcard app is Quizlet (I’m sure you have head of it already).

A simple virtual flashcard app should allow a user to:

  • Create Folders For Different Subjects
  • Create Flashcards Sets For Particular Modules
  • Revise Flashcard Sets Effectively.

25. Public Transport Timetable App

Now, I don’t mean just display a PDF image of a pre-existing bus timetable and say “finished!”…

This app should be able to perform web-scraping on live bus and train timetables and display the information is a user friendly way.

Your program could even take two postal codes and calculate the quickest way to get there using a mixture of public transport and walking. It could also return the current price for that specific journey. An example of how this can be implemented is on the Stagecoaches “Plan A Journey” page.

26. Social Networking Platform

You all know what a social networking platform is. I don’t think I need to explain this one to you…

27. Physics Projectile Modelling Tool

If you are a fan of mechanics, this is your project. One of the many reasons this project is so good is because when programming it, you are forced to simulate a real world environment – in the sense that you program in gravity, terrain, air resistance etc.

Furthermore, if you were so inclined, you could very easily transform this project into a game, where you try to hit particular objects using a projectile. Angry birds is a great example of what I mean.

28. Nuclear Power Plant Management System

There’s more to managing a nuclear power plant than you think. Therefore, a nuclear power plant management system can either be super simple or extremely complex depending on what you choose to implement into the system.

I highly recommend you check out this link , it tells you all about the parts of a nuclear power station and you will get a feel for what your system will be managing very quickly.

29. Weather Forecasting Software

There are many paths you could take with this particular project, so it’s really down to what you decide. However, the fundamental core of this project is that you need to at least make an attempt at predicting what the weather will be like tomorrow, the day after or perhaps even a week from now.

You could implement some kind of machine learning algorithm that could compare what your weather prediction was and what the weather actually turned out to be like. From here, the algorithm could adjust the factors that went into making the prediction accordingly.

30. Air Traffic Controller AI

Air traffic controllers are essential to ensure that planes aren’t going to collide when coming in or going out of an airport. However, humans tend to make mistakes – fairly regularly. Maybe an AI would always get it right?

For this project, you would have to create a model of an airport and simulate planes coming in and leaving. Your, AI would ensure that no planes crash… hopefully.

31. Interpreter For Chosen Programming Language

Interpreters convert high level language code into machine code that can be directly processed by the CPU. Furthermore, interpreters normally translate code per line, not all at once.

Although this programming project is challenging, you might struggle to incorporate some of the A* level programming concepts in your code. All I’m saying is that make sure you keep an eye on the marking criteria and don’t forget why you’re doing this project – to get the grades!

32. Internet Speed Tester

There’s more that goes into getting an accurate assessment of your internet bandwidth than you think. Therefore, making an internet speed test is definitely complex enough.

For this project, you will need to add feature to bulk it up. You could maybe try different methods of testing internet speed then compare how accurate each of them are.

33. Secure FTP Server

FTP stands for File Transfer Protocol. So this project would basically be making software that allows devices to easily transfer files between each other. I know I’ve said this a lot, but, once again, this project is going to be as complex as you make it.

If you choose this project, make sure you don’t just use an FTP library that does everything for you! Try and do as much as possible by yourself.

34. Software To Find The Best Online Deals

For this project, you’re going to need to “scrape” all of the current prices for a particular product off their respective websites. That’s the hard part. Next, you will have to present all of your various comparisons to the user in an easy-to-understand way (and give a conclusion containing where they can find the cheapest price).

A great example of this type of software is the website Trivago.

35. AI Chat Bot

This project would entail you creating a program that can talk to humans as if it was a human too. If there was such thing as a perfect AI chat bot, you shouldn’t be able to distinguish it from a human.

When programming this, you are going to need to be able to program in some sort of artificial intelligence that can learn from previous conversations it had with real people.

Two examples of chat bots that I have seen before are CleverBot,   Eviee, and more recently ChatGPT.

36. Search Engine

Examples of search engines are: Google, Bing and Yahoo. There role is to receive a query from a user and index webpages in accordance with how relevant they are to the particular query. So if you googled “what is a pineapple?”, the idea is that a webpage containing information about pineapples would come up first before information about bananas.

There are many factors to consider when ranking webpages. Possible ranking factors for your SE could be:

  • Keyword Frequency
  • Image ALT Tags
  • How Users Have Interacted With Page Previously.

37. AI Spam Filter

If you’ve ever been directly (or even indirectly) involved in front-end website development or survey development, you will know how big of a problem spam is. Spam messages can take many forms and with each passing year, it is getting more and more difficult to decypher what messages are genuine and which are spam.

This means that for your A-Level Computer Science NEA project, an idea could be to build a spam filter that could be run on an email server, implementing AI and Machine Learning. There is huge potential with this project idea and it is certainly not an easy one to develop!

38. Music Suggestion Tool

We’ve all used and heard of the famous YouTube recommendation service… Every time you go on YouTube, they have an algorithm running that recommends videos based on what they think you’ll like. Why not make your own version but just for music?

You could even tailor the recommendations to what mood the person is in by analysing music videos for particular themes e.g. sad, happy or exiting. If you did decide to go down this route with your NEA project, there is huge potential with this idea for machine learning implantation which would be designed around user feedback (user specifies whether or not the recommendation was good).

There is a great video on how the YouTube recommendation algorithm works here.

39. Graph Plotting Software

If you’re currently studying A-Level Maths or A-Level Further Maths, you will know the importance of graph plotting software is very high. So, there’s demand, why not provide the supply in the form of an NEA computer science project?

Your project could receive a polynomial expression as an input, and output (plot) a visual graphic of that graph… There are many examples of these types of software out there, one that you should check out is GeoGebra .

40. Foreign Language Teacher

This project idea could be made extremely basic, or extremely advanced. However, the fundamental building blocks of this project idea will always be the same; it will assist users in learning a foreign language. I don’t think I need to say too much about this idea, but I would recommend you checkout examples of this type of software such as Babbel or Duolingo.

41. Sat Nav

This NEA project could potentially consist of both web-scrapping and Dijkstra’s algorithm. That is a seriously nice combination!

What is not immediately obvious about this project idea is how much graphical work there is to it – there’s a lot. All I’m saying is that if you do decide to choose a project idea similar to this one, be sure that your graphical skills are very strong!

The most obvious example of software similar to what’s mentioned above is Google Maps, go check it out , if you’re interested.

42. Make Your Own IDE

Now this might seem intimidating at first but hear me out. There’s lots of resources out there to help you out on this project and it allows you to be as creative as you want since you’re the designer. You should be able to run, debug and compile the code.

You can use this video and this article to get you off to a good starting point.

43. 2D Platformer Game

This A-Level NEA project allows you to be as creative and go into as much detail as you want. You could include enemies, randomly generated levels, level editors where the player could make their own levels, multiplayer capabilities etc. One of the more challenging things you could do is include the ability to save your position and access it later.

This project will really get your creative juices flowing as, even if someone has the same idea as you, your games could come out wildly different. You can find many game making tutorials, particularly in Python. You may have heard of the popular library pygame which most games in Python are based on. You can click here to find a tutorial on the basics of pygame.

44. 3D Platformer Game

This will certainly push you into the top marks as it requires a deeper understanding of how to render vector graphics and some maths. Remember, the examiners aren’t worried about how good the game looks, they want to know about the complexity of your code and the skills you showcase within it. Some of the most popular libraries include OpenGL (in C/C++) and Panda 3D (Python).

One of the advantages of doing a 3D game is that the game itself doesn’t actually need to be very complicated. If all goes well, the complexity should come from the 3D rendering, meaning your game could be relatively simple.

45. Revision Aid

This idea is very popular amongst students as they likely already use one, or are taking this opportunity to build their own. This can be anywhere from a flashcards application to a quiz or a game where you have to dodge the wrong answers. See Quizlet or Anki for inspiration.

As with the platformer, the scalability of this project is up to you and how complex you want to make it. Maybe you want to have a competition element where users get a score for how many questions they get right. This project will require a knowledge of databases (e.g. SQL) so if that’s something you’re not good with then there’s still a few more to go.

46. Circuit Simulator

This project is heavily centred around a good-looking GUI, so you will need to have an immense amount of self-control to ensure you don’t throw away hours and hours into a part of the code that barely gets you any marks.

The idea is based around an interactive, online version of a circuit builder, allowing users to connect resistors, lamps and other electrical things I don’t know the names of using wires. You may want to make use of TKinter , a python library, to help with your GUI.

47. Live Chat Forum/Room

This one is pretty self-explanatory but requires a deep knowledge of networking and client-server communications. There are many tutorials you can find online on how to create chat software which is where your creativity will need to come in.

You could think about allowing users to send pictures, create their own group chats, send videos etc. You could even create an AI moderator which censors inappropriate language or detects inappropriate pictures and takes them down.

48. Robotics

This seems quite vague but what I mean is using code to control and communicate with a robot that serves a certain purpose. For example, you could code a robot vacuum to detect walls or the size of the room, where dirt is etc. You can do this through image recognition which by itself is very complex and high level, securing you those marks.

The biggest thing with this is that it requires you to have access to the required hardware so you can check if it works correctly. With the robot vacuum idea, you’re going to need to have a robot vacuum on hand.

49. Business Rota Application

Some of you might have part-time jobs, in which case you will have a better idea of what this is. In order to make sure too many people aren’t working the same shift at once, businesses often have a rota which keeps track of who goes where and at what time.

You could create a database with a simple GUI which considers new employees and their shifts and orders them accordingly. This ensures shifts aren’t clashing or overlapping. You could make this as customisable as you want to where it could apply to any business who have any number of employees working at one time or several related times.

You may need to get into contact with a real business and analyse their current system. That way, you can find anything wrong with it and improve upon it. It also means you have a bit less work to do because you aren’t starting from scratch.

50. Recreate a Classic / Retro Game

This takes away the element of coming up with brand new game logic. Instead, you have the rules laid out for you and you just have to follow them. However, there is a definite danger of copying and pasting premade code as the game already exists. Try to add your own twist to the game.

For example, you could remake Pacman but instead of having the ghosts controlled by AI, you could have them be controlled by other users. Not only is this complex, but it also ensures your code isn’t identical to the original game. There’s a whole library dedicated to retro game making in Python which you can find here .

51. Weather Forecaster

As boring as it sounds, it has the potential to get you into that high grade band. It may require some web-scraping and you might want to build your own site to display this info. You could show the predictions for the weather on this site and you could allow the user to enter their email to be sent alerts or notifications if extreme weather is to occur.

52. GPS App

Here’s your chance to implement all those path-finding algorithms your teacher might have been telling you about (I’m looking at you Dijkstra ). You can implement this in different ways, whether it’s the “Google Maps” approach where the user defines a destination or the “Find My iPhone” approach where the destination is unknown by the user until the app is activated. Maybe they want to put a GPS on their kid’s device or their own device.

53. Meteor Trajectory Simulator

If you like space or physics, this one is for you. You can really go wild with this in terms of the GUI and the back-end code. It will need a lot of complex mathematical formulae in order to function correctly, but it will be worth it when you get that top A-Level grade. That’s why having at least some interest in mathematics will benefit you in this project. You’ll be working with a lot of numbers whether that’s calculating velocity or determining the angle of a meteor.

54. 2D Shooter

This is similar to the platformer except the focus will be on the shooting aspect. You could use AI to control the enemies and maybe include different levels of guns that do different damage. You could even do a boss battle. Refer to NEA idea two to find a pygame tutorial which should give you a good base on making the game.

55. Street Fighter Remake

If you’ve ever played or heard of street fighter, you know what you need to know. However, for the three people at the back who have never heard of it, it’s a 2D fighter game. You can customise this however you want and include power ups, boss fights etc. You may need to look at the code of several other similar games to combine them and make your own.

56. Finding the Shortest Route on the London Underground

This project will allow you to use the path finding algorithms and maybe a website. You can calculate the shortest distance between two stations and calculate the time taken to get there. You will probably need to do some research on JavaScript in order to get the backend of your website working. I’ll link a website tutorial here to get you started.

57. Workshop / Club Booking Timetable

Similar to the rota system, this project will ensure that two people are not booked at the same time on the same day. This will require a knowledge on relational databases, namely SQL which, at this point in your A Level, you should know a bit about. If not, there’s a quick project you can do to get yourself familiar with queries, primary keys, foreign keys etc.

58. Visualising the Spread of a Disease

You could web-scrape here and show on a map of the world and the associated deaths from a certain disease. In other words, you could for example show hot spots for the disease in reds or oranges and leave the others as white. Web scraping is a relatively easy thing to learn and can be extremely powerful, even outside of your A-Level. Here’s a quick tutorial to get you started. The complexity will come from how you present the data you’ve scraped.

59. Plane Seat Booking System

This will be like the workshop booking system in that you need databases to store the customer’s information. You would ensure that one seat is not offered to two people at once. You could even keep track of the details of loyal customers and offer them first class tickets or other deals.

60. Stock Management System

This would be a database which stores the amount of stock a business has. You could produce sales reports for the most popular items or see which items are low in stock. There are many combinations of ways you could output this information (e.g. a report, website, email). Just ensure it is more complex than placing the output in the terminal.

61. Traffic Light Controller

This project entails coding an AI to ensure that cars don’t collide. You could possibly set it up where, if there’s an ambulance, you give it all green lights. You might even want to use image recognition based on a satellite image of a city and gather the locations of the traffic lights on that image. That would really push your grade up as, instead of using a built in library, you can “teach” your AI what traffic lights look like. Find a video tutorial on machine learning in Python here .

62. Coupon Collector

If you’ve ever heard of “Honey”, you’ll know the gist of this project. You will have to scrape the internet for coupons for a certain website specified by the user. The code could automatically test these coupons and output the cheapest one. See number 17 for a website scraping tutorial.

63. Facial Recognition Software

This project seems complex but that’s a good thing if you want the highest grade. This has a variety of purposes as many of you are likely familiar with the face recognition on many phones. Read this article o n how the basics of how to do it in Python and find out more.

Make sure you aren’t just relying on built in libraries to handle the complex algorithms because all those marks will disappear. You have to write the code yourself and typing “import facialRecognition” doesn’t count, as sad as that is.

64. Chess Over Two Computers

Here you can include networking and client-server communication (both of which are references in the A-Level Computer Science specification). There is a possibility to include AI which detects automatically if there is a check or checkmate. This would require you to keep track of the ending positions of each piece and know what constitutes as a check for example. Most turn-based games rely on a sort of algorithm which you can find out more about here .

65. Sudoku Solver

This requires intense programming and AI but will totally be worth it by the end. You could give the user the opportunity to try and solve it themselves at first then, afterwards, give them the answer. You could also set a time limit, you could have a scoreboard, there’s lots of things you could do with it. Also, you may want to have the unsolved puzzle be randomly generated which adds a whole new layer of complexity. Computerphile has a great video on this exact subject in Python.

66. Social Media Specifically for Students in the Same College or University

A social media idea has already been suggested but you may want to make one specifically for your college. The students could input their timetables and the code could suggest other students with the same timetable. That way, they can meet during their mutual break time. You could also include group chats for specific subjects at your college.

67. Fantasy Football Team

Web scraping is going to be a major concept in this project unless you want to hard code in every footballer on every team. You could set up a network where fantasy teams can “play” against each other and winners get more points. The user can customise their own team and earn points. You can then display it in a website or another GUI like TKinter.

68. Planet Orbit Simulator

This one goes out to the physics and maths students again. Allow the user to change the size, direction and colour (why not?) of planets and calculate the trajectory of their new orbit. This would entail many mathematical calculations so, if you like this sort of thing, this is for you. It also gives you the chance to use and render 3D graphics in order to visualise the planets for the user.

Take a look at the game Kerbal Space Program for an advanced implementation of this idea!

69. Pathfinding Comparer

Here, you would test and visualise the efficiency of certain pathfinders in different situations. For example, the user could place certain obstacles between two points and then employ the Dijkstra and A star path finders. You can find what I mean in a tutorial here . There are many, many, many pathfinders you can compare so you can really pick whichever ones you would like. I won’t list them all here, but you can find a some of them through this link .

70. Finding Shortest Path on a College / University Campus

With this project, you would need to create a graph with each node corresponding to the buildings or departments on the map. This would make more sense if you choose a college or university that has a big campus that spans over a large geographical area. It may end up being very useful for those students who have 5 minutes to speed walk all the way across their campus. The heuristic or weight of each edge could be determined by many things (e.g. whether you have to cross a road, if you have to go through a certain building with stairs etc).

71. Solitaire

This popular card game might be simple to code but to add that layer of complexity, you can include the option for an AI to complete the game for the user. It needs to be able to recognise if the game is completable though.

72. Password Manager

Think “LastPass” or “DashLane”. You securely store and encrypt your user’s passwords and, if you wanted to, you could include a password suggestion element where the application offers a potential strong password to the user. This takes away the need for the user to memorise their passwords and think of a way to make it stronger. You can find an example here and extra info here .

73. Simple Board Game

You might want to come up with your own board game or copy another anywhere from Scrabble to Monopoly. This will take a lot of time and consideration into how you would like it to work. You may want to set up a tutorial or make it multiplayer against other humans (this might be your chance to include AI)

74. Cash register

A cash register would be great as you can base it off pre-existing cash registers in terms of the functionality. It offers a web version of a cash register that would be used by small businesses. This means you could contact small businesses in your area and cater to their needs. It may track sales, inventory and checkout credit cards. The options for what you want the cash register to do are completely up to you and your client’s needs.

This kind of goes under the retro games column however, there is the potential for AI to be implemented. You could program the AI to play the most efficient move and get the most points. The best way to go about this is to code the game by itself first the add the AI afterwards. You can even apply a competitive element by having a score system via relational database or multiplayer functionality.

76. Pacman Recreation

You can use AI to control the ghosts and, to really push yourself, you can add difficulty levels to these ghosts. Maybe the longer/more a user plays, the harder the ghosts get. You can increase their difficulty by making them faster or making them “smarter”. This would require path-finders to find the shortest path from the ghost to the player.

The Importance of Mark Schemes and Specifications

The mark schemes and specifications for A-Level Computer Science will be your best friends throughout your whole coursework experience. Though they can sometimes be vague, you should be working closely with them to ensure your project hits all the points you need so you can collect those marks. Good luck!

  • AQA Computer Science Mark Scheme
  • OCR Computer Science Mark Scheme

guest

nice project

sloppy

the exemplar is motion control and thats bares hard

O.L

bruh what do i put as stakeholders for the rubiks ai

Deborah Meaden

Your idea is brilliant and many puzzle solvers are going to really benefit from your programme, and for that reason, I’m out.

Derik malik

Hi i was just wondering how i could make the (“visualizing the spread of a disease”) program to show a large amount of skill as I worry that there wont be enough coding involved to showcase a lot of skill.

pew

Discover the Top 75 Free Courses for August

computer science coursework example

Udemy Announces Layoffs Without Saying ‘Layoffs’

Udemy’s latest ‘Strategic Business Update’ uses corporate euphemisms to signal job cuts while pivoting to enterprise clients.

  • 7 Best Sketch Courses for 2024
  • 8 Best Free Geology Courses for 2024
  • 7 Best Climate Change Courses for 2024: Exploring the Science
  • [2024] 110+ Hours of Free LinkedIn Learning Courses with Free Certification
  • 7 Best Free Haskell Courses for 2024

600 Free Google Certifications

Most common

  • digital marketing
  • graphic design

Popular subjects

Cybersecurity

Digital Skills

Popular courses

Bioseguridad y equipo de protección para la prevención de COVID-19

Happier Employees and Return-On-Investment Course

Understanding the Brain: The Neurobiology of Everyday Life

Organize and share your learning with Class Central Lists.

View our Lists Showcase

Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

CS50's Introduction to Computer Science

Harvard University via edX Help

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.

David J. Malan

  • united states

Related Courses

Cs50's ap® computer science principles, readings in global health (2017), masterpieces of world literature, leaders of learning, introduction to bioconductor, the einstein revolution, related articles, ivy league online courses, 600+ free computer science courses from world’s top 50 universities, 150+ stanford on-campus computer science courses available online, 5 best web development courses, 100 top free edx courses of all time, massive list of mooc-based microcredentials.

4.6 rating, based on 180 Class Central reviews

Select rating

Start your review of CS50's Introduction to Computer Science

  • Buttercup Pansies 9 years ago They were not kidding when they said the course was "demanding". I spent at least 2 hours daily working on the course and each course week took me a month to complete. It was exhausting a lot of the time. The problem sets are designed in such a way… Read more They were not kidding when they said the course was "demanding". I spent at least 2 hours daily working on the course and each course week took me a month to complete. It was exhausting a lot of the time. The problem sets are designed in such a way that one is forced to read and do further research to accomplish them. The sense of satisfaction I gained from completing each problem set was tremendous and even though the learning curve is steep (to say the least), I am now comfortable in my understanding of the basics of computer science and in coding in C. The web design module was probably the most fun even though for me personally it was the most demanding. I guarantee you will be pulling your hair out sometimes if you take this course, but you will have tremendous fun most of the time and the sense of accomplishment is exhilarating! Helpful
  • AA Anonymous 5 years ago This course is not for beginners. I wanted to learn programming for fun, to understand what my husband does, and learn something new at a leisurely pace. But introduction means nothing, you jump right into problems sets that are extremely challengin… Read more This course is not for beginners. I wanted to learn programming for fun, to understand what my husband does, and learn something new at a leisurely pace. But introduction means nothing, you jump right into problems sets that are extremely challenging. The instructor speaks at a lightening speed, bouncing around ideas, as if talking fast will keep me interested. It does the exact opposite, I'm like "what is happening?" I also consider myself a studious person and a classroom teacher and this didn't feel basic. For someone who's never written any code and learning for fun, my frustration level was way too high and preventing me from moving on. I needed more scaffolding/building blocks (again this is supposed to be an introduction) because I just wasn't understanding what he was talking about no matter how many times I looked back at the notes, lectures, slides; I couldn't piece it together and had to find another more suitable course for my level. Helpful
  • Kunal Verma 1 year ago Title: CS50's Introduction to Computer Science: A Remarkable Journey into the World of Computing CS50's Introduction to Computer Science is an exceptional online course that delivers a comprehensive and engaging experience for anyone interested in… Read more Title: CS50's Introduction to Computer Science: A Remarkable Journey into the World of Computing CS50's Introduction to Computer Science is an exceptional online course that delivers a comprehensive and engaging experience for anyone interested in exploring the vast realm of computer science. Developed by the renowned Harvard University, this course serves as a perfect starting point for beginners and a valuable resource for those seeking to deepen their understanding of computer science concepts. One of the most remarkable aspects of CS50 is its ability to cater to a wide range of learners, regardless of their prior knowledge or experience. The course is designed in a way that ensures accessibility for beginners, without compromising on the quality or depth of the material covered. It effectively breaks down complex concepts into easily digestible modules, making it suitable for individuals with various learning styles. The course content is incredibly comprehensive, covering fundamental topics such as algorithms, data structures, programming languages (including C, Python, and JavaScript), web development, and even aspects of artificial intelligence. Each topic is presented through a combination of lectures, problem sets, and practical assignments that allow students to apply their knowledge in real-world scenarios. The course strikes a perfect balance between theory and hands-on practice, ensuring a solid foundation in computer science principles. David J. Malan, the course instructor, deserves immense praise for his exceptional teaching style. His enthusiasm, clarity, and ability to communicate complex ideas in a relatable manner make the lectures highly engaging. The course also benefits from a supportive online community, including discussion forums and a dedicated Slack channel, where students can seek help, collaborate, and engage with fellow learners from all over the world. CS50's Introduction to Computer Science also emphasizes critical thinking and problem-solving skills, which are invaluable in the field of computer science. The problem sets and assignments challenge students to think creatively and develop efficient algorithms to tackle real-world problems. This approach not only enhances programming skills but also fosters a mindset that is crucial in any technological discipline. Furthermore, the course provides excellent resources for self-assessment and evaluation. Regular quizzes and problem sets allow students to gauge their understanding of the material and identify areas that require further attention. Additionally, the course's grading system provides a sense of accomplishment and motivation to progress further. In conclusion, CS50's Introduction to Computer Science is an exceptional online course that excels in its ability to deliver a comprehensive and engaging learning experience. Whether you're a beginner exploring the world of computer science or a seasoned professional looking to refresh your knowledge, this course will undoubtedly meet and exceed your expectations. The combination of high-quality content, exceptional instruction, and a supportive online community makes CS50 a must-take course for anyone interested in computer science. Helpful
  • Erik Trautman 10 years ago CS50 turned out to be precisely what I wanted. The platform is reliable, the UX is crisp, and, most importantly, the course content is phenomenal. Professor David Malan and his army of TAs put an absurd amount of effort into giving Intro to Computer Science actual LIFE. From the first video, it inspired that nervous excitement that always accompanied my setting foot into a lecture hall for the first time. This wasn't YouTube, this was the Real Deal. Because the course was hard. The homework assignments, which were offered via the same appliance that the live students used and submitted to the same grading tool as well, took me anywhere from four to twelve hours apiece. Helpful
  • MM Mark Mahoney 10 years ago CS50x is essentially like taking a real, full-length college-level course, complete with lectures, breakout sections, walkthroughs, homework, quizzes, etc... Prepare to be infuriated after watching 5-6 hours of video content and realizing that you still have absolutely no idea how to actually do the homework. If you're looking for somebody to hold your hand through the syntax (like the 56% of people with no background in CS likely were), you won't find it here. Helpful
  • PS Paras Saunkiya 1 year ago CS50's Introduction to Computer Science is an outstanding course that stands out from the multitude of online programming courses available today. Developed by Harvard University, this course provides an exceptional introduction to the world of comp… Read more CS50's Introduction to Computer Science is an outstanding course that stands out from the multitude of online programming courses available today. Developed by Harvard University, this course provides an exceptional introduction to the world of computer science, making it accessible and engaging for both beginners and more experienced learners. One of the key strengths of CS50 is its comprehensive and well-structured curriculum. It covers a wide range of fundamental concepts, including algorithms, data structures, memory management, and more. The course begins with Scratch, a visual programming language, which allows beginners to grasp basic programming concepts through interactive and creative projects. As the course progresses, it transitions to teaching the fundamentals of programming languages like C, Python, and SQL, providing a solid foundation for further exploration. The quality of instruction in CS50 is top-notch. Professor David J. Malan, the primary instructor, has a unique teaching style that combines enthusiasm, clarity, and depth of knowledge. His engaging lectures and demonstrations are complemented by excellent course materials, including lecture notes, problem sets, and walkthroughs, ensuring that learners have multiple resources to reinforce their understanding. One of the standout features of CS50 is its emphasis on problem-solving and critical thinking. The problem sets, which are an integral part of the course, are challenging yet rewarding. They encourage learners to apply the concepts learned and think creatively to solve real-world programming problems. The course's vibrant online community, including the active discussion forum, provides a supportive environment for students to collaborate, seek help, and share their achievements. Another notable aspect of CS50 is its production quality. The course videos are professionally recorded and edited, offering a visually appealing and immersive learning experience. The high production values contribute to the overall enjoyment and engagement of the course, making it feel like you're attending a live lecture in a classroom. Furthermore, CS50's Introduction to Computer Science is constantly updated to reflect the evolving landscape of technology. The course ensures that learners are exposed to relevant and up-to-date programming concepts, tools, and languages. This commitment to staying current showcases the dedication of the course creators and their understanding of the industry's needs. In conclusion, CS50's Introduction to Computer Science is a phenomenal course that has rightfully gained its reputation as one of the best introductory programming courses available. Whether you're a complete beginner or an experienced programmer looking to solidify your foundations, this course offers a remarkable learning experience. With its comprehensive curriculum, exceptional instruction, emphasis on problem-solving, and commitment to staying current, CS50 is an absolute must-take course for anyone interested in computer science. I wholeheartedly recommend CS50 to anyone seeking a solid introduction to computer science and programming. It will not only equip you with the necessary skills but also ignite your passion for the subject, setting you on a path towards a rewarding career in technology. Helpful
  • AA Anonymous 3 years ago This course takes you through the proverbial weeds of computer science. We start from an bottom up approach, learning about how computers only understand binary, then how a layer of ASCII makes more intelligent; it's extension with UNICODE, how in m… Read more This course takes you through the proverbial weeds of computer science. We start from an bottom up approach, learning about how computers only understand binary, then how a layer of ASCII makes more intelligent; it's extension with UNICODE, how in modern world we arrived at different languages, we get to understand how layer by layer everything is connected and it goes back to binary. After this we learn literally from SCRATCH different programming languages, difference and more importantly similarities between them. All of this in only the first lecture. And there's more to each lecture after this. Given we only touch the concepts but I think that that's what introduction is supposed to be about and nevertheless if you follow the P-sets and assignments, you are bound to make the time spent on this course more productive than any other time in your life. Do I think this course is hard? - Well, Sure; Are the problem sets difficult? - Definitely; Will it require too much time studying outside of lectures? At this stage I will say, you will spend as much as 10 times the time spent on lectures, to study outside material. I know a lot of you will be discouraged but let me assure you, not only will you be proud of your progress at the end but learning this way will also make you self reliant and ready for future challenges in computing world. There are communities for this course which will help you only if you ask. If you want to follow this course I suggest you give your everything, kitchen sink included. A sincere effort will take you a long way. What matters at the end is where you end up at the end of course compared to yourself at start, and that difference is unfathomable. Credit where credit is due; It takes great effort and commitment to come up with quality course like this and David Malan, being the great teacher that he is, does it year after year, semester after semester, and makes it look ridiculously easy (I guess that's how Legends like to do it.) The whole team of CS50 and CS50X has put unbelievable amount of effort in this course and it can be seen in every small detail in the course. Hats off to them. Helpful
  • Rui Ma @ruima 4 years ago 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. Helpful
  • Thala Raj Timalsina @iamnirjal 11 months ago Too much thing to learn . I am from a IT background so i liked the couse but even for the genereal knowledge people must learn this course. Thank you for free course. Helpful
  • David Venturi 8 years ago (Full review: https://medium.com/@venturidb/review-harvard-cs50-introduction-to-computer-science-75405e684a61#.1jq3325cw) I’m having a hard time describing CS50 without sounding hyperbolic. The course was just so damn good. The content is engaging. David Malan is too good at his job. The production value is absurd. Honestly, go check out a lecture for the production value alone. I have now completed CS50, Stanford CS101, and half of Udacity CS101 and without question Harvard’s introduction to computer science is my favourite. Helpful
  • Jenna Abdullah @DavidMalan 11 months ago Good course also interesting I love how many information I can get in a free course ! so lovely and again thank you Helpful
  • AS AKHAND PRATAP SINGH 8 months ago This course takes you through the proverbial weeds of computer science. We start from an bottom up approach, learning about how computers only understand binary, then how a layer of ASCII makes more intelligent; it's extension with UNICODE, how in m… Read more This course takes you through the proverbial weeds of computer science. We start from an bottom up approach, learning about how computers only understand binary, then how a layer of ASCII makes more intelligent; it's extension with UNICODE, how in modern world we arrived at different languages, we get to understand how layer by layer everything is connected and it goes back to binary. After this we learn literally from SCRATCH different programming languages, difference and more importantly similarities between them. All of this in only the first lecture. And there's more to each lecture after this. Given we only touch the concepts but I think that that's what introduction is supposed to be about and nevertheless if you follow the P-sets and assignments, you are bound to make the time spent on this course more productive than any other time in your life. Do I think this course is hard? - Well, Sure; Are the problem sets difficult? - Definitely; Will it require too much time studying outside of lectures? At this stage I will say, you will spend as much as 10 times the time spent on lectures, to study outside material. I know a lot of you will be discouraged but let me assure you, not only will you be proud of your progress at the end but learning this way will also make you self reliant and ready for future challenges in computing world. There are communities for this course which will help you only if you ask. If you want to follow this course I suggest you give your everything, kitchen sink included. A sincere effort will take you a long way. What matters at the end is where you end up at the end of course compared to yourself at start, and that difference is unfathomable. Credit where credit is due; It takes great effort and commitment to come up with quality course like this and David Malan, being the great teacher that he is, does it year after year, semester after semester, and makes it look ridiculously easy (I guess that's how Legends like to do it.) The whole team of CS50 and CS50X has put unbelievable amount of effort in this course and it can be seen in every small detail in the course. Hats off to them. Helpful
  • KR KARNAM ROOPESH 11 months ago CS50's Introduction to Computer Science isn't just an online course; it's a transformative experience that takes learners on an exhilarating journey through the captivating realm of computer science. From the very first lecture, it's evident that th… Read more CS50's Introduction to Computer Science isn't just an online course; it's a transformative experience that takes learners on an exhilarating journey through the captivating realm of computer science. From the very first lecture, it's evident that this course is something special. Developed by Harvard University, CS50 stands as a shining example of how online education can be as engaging, if not more so, than traditional classroom experiences. The course structure is a masterstroke of pedagogy. It accommodates both beginners with no prior coding knowledge and those with some experience, making it accessible to a wide range of learners. The problem sets, designed to challenge and inspire, strike an impeccable balance between theory and practice. They nudge students to not only grasp the concepts but to implement them in real-world scenarios, fostering a deep understanding of computer science principles. Professor David J. Malan, with his infectious passion and gift for simplifying complex topics, is the heart and soul of CS50. His lectures are a blend of clarity, wit, and enthusiasm that breathe life into otherwise daunting subjects. Whether he's unraveling the intricacies of algorithms, data structures, or diving into web development, Professor Malan's teaching style keeps learners hooked, making the learning process feel more like a thrilling adventure than a lecture. The production quality of the course is top-notch. The visual aids, animations, and demonstrations are not only visually appealing but also essential in grasping abstract concepts. Additionally, the course's interactive elements, such as the "walkthroughs" and "shorts," provide learners with an opportunity to reinforce their understanding in bite-sized, manageable chunks. What truly sets CS50 apart is its vibrant community. The course's online platform encourages collaboration and support among students from around the world. The discussion forums facilitate lively debates, problem-solving, and the sharing of insights, effectively replicating the experience of being part of a physical classroom. This sense of community not only enhances the learning experience but also provides a valuable network of like-minded individuals. CS50's capstone project is where the magic culminates. It challenges students to bring together everything they've learned and create something truly remarkable. Whether it's designing a web application, a game, or any other project, this final task serves as a testament to the incredible progress students have made throughout the course. In conclusion, CS50's Introduction to Computer Science is a triumph in online education. It's an intellectually stimulating, emotionally rewarding, and thoroughly enjoyable exploration of the world of computer science. From the curriculum design to the charismatic professor to the interactive platform, every facet of the course is meticulously crafted to deliver an unforgettable learning experience. Whether you're an aspiring programmer, a tech enthusiast, or simply curious about the digital world, CS50 is an opportunity you shouldn't miss. Helpful
  • MB Michael Brown 1 year ago My first coding course. CS50 holds a special place in my heart. CS50 is hard. At least as a programming newbie, I thought it was hard. I screamed at the screen "How the hell am I meant to know that!" more than once. But real life programming is h… Read more My first coding course. CS50 holds a special place in my heart. CS50 is hard. At least as a programming newbie, I thought it was hard. I screamed at the screen "How the hell am I meant to know that!" more than once. But real life programming is hard and CS50 teaches you quickly the number 1 rule of programming: Google is your best friend. Should they start with teaching C? Maybe? Maybe not? At least by doing C at first you won't be intimidated by lower level programming languages, even if like me you switch to something like Python later. Tips for students: - Learn how to Google things (don't search "CS50 problem answers to set 5" instead use things like "how to change the last item in an array in C") - Watch all the short videos, not just the long main one. By the end of the course I much preferred the cheeky smirks of Lloyd's videos over Dr. Malan's clinical and overly polished deliveries. - Use the Reddit and Discord communities to get support when you're really stuck - The course is hard, it's okay to feel frustrated, you feel great when you complete it finally - Don't leave big chunks of time between study sessions Helpful
  • AA Anonymous 6 years ago I am currently taking MIT's python course. It is designed much better for beginners. While lectures for CS50 are phenomenal, problem sets are not realistic and quite discouraging. I am glad I decided to try something else. Helpful
  • AA Anonymous 6 years ago This is course was one of the best things I ever found ever since I started programming! The course is, yes , not being difficult is definitely on the harder side. The lectures are of great quality, are to the point, and the instructor too is great! The problem sets were pretty good too. Also if your are in a dilemma that this might too hard for you, take it. Believe me, if you are sincere and dedicated enough, you will do it. Please note that I did know python before taking this course , but even if you don't know anything about programming, you will do just fine! Highly recommended for beginners. Helpful
  • Local Expert 1 year ago BestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestB… Read more BestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBestBest Helpful
  • AA Anonymous 4 years ago The lectures are phenomenal but it stops there. David only touches on topics during his lectures. Then you are asked to complete problem sets when no one ever taught you any of the skills necessary to complete them. And by "no one ever taught you" - I mean no one even brought up the subject in the lecture. You must look up and teach yourself 90% of what you need to do the problem sets. If I wanted to teach myself the majority of the information I need, I would not have enrolled in a class. Two stars for the lectures. Zero stars for everything else. Helpful
  • RG Robert Grutza 9 years ago There is a lot of good stuff here, but is is so painfully disorganized it is a chore to figure out. Navigating the dozen sites associated with the class is more difficult than the actual material. If they ever organized this, it could be good. It is like they are trying to waste as much student time as possible for very basic instruction. Helpful
  • CO Chijioke Okediadi 2 months ago It is a great way of learning online, I love it. The only complaint I have was that the projector for the class was too far for us studying online. That is my only complaint, but the lecturer was really good and clear and sound, I liked how he explained things and interacted with the students Helpful

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

  • International
  • Education Jobs
  • Schools directory
  • Resources Education Jobs Schools directory News Search

A-level Computer Science - Coursework exampler

A-level Computer Science - Coursework exampler

Subject: Computing

Age range: 16+

Resource type: Unit of work

A-levelEx

Last updated

11 October 2021

  • Share through email
  • Share through twitter
  • Share through linkedin
  • Share through facebook
  • Share through pinterest

computer science coursework example

This document is an example of a coursework (Programming Project) done for A level Computer Science with OCR. It follows the 2015 specification.

It is 217 pages long and got 68/70 marks.

Tes paid licence How can I reuse this?

Get this resource as part of a bundle and save up to 67%

A bundle is a package of resources grouped together to teach a particular topic, or a series of lessons, in one place.

A-level Computer Science (Coursework exemplar and notes)

A bundle which contains the notes and examplar for OCR A-level Computer Science. Save more than 50% by purchasing this bundle.

Your rating is required to reflect your happiness.

It's good to leave some feedback.

Something went wrong, please try again later.

This resource hasn't been reviewed yet

To ensure quality for our reviews, only customers who have purchased this resource can review it

Report this resource to let us know if it violates our terms and conditions. Our customer service team will review your report and will be in touch.

Not quite what you were looking for? Search by keyword to find the right resource:

Computer Science Sample Course Sequence

FRESHMAN
FALL Credits
 First Year Seminar 101 1
  3
   (TECH)  3 
   (QPS) 3
 Natural Science (SNW) 4
 Total 14
SPRING Credits
 First Year Seminar 102  1
   (WRT)  3
    3 
 Natural Science  4
   (TECH)  4
 Total  15
 
SOPHOMORE
FALL Credits
 3
 3
SBC  3
Natural Science  4
SBC  3
Total  16
SPRING Credits
 4
 3
     3
SBC  3
SBC  3
Total 16
JUNIOR
FALL Credits
 (SPK & WRTD)  3
 or   3
 3
 3
SBC  3
Total  15
SPRING Credits
 (STAS, CER, ESI)  3
 3
 3
Elective  3
  3 
Total  15
SENIOR
FALL Credits
 3 
CSE advanced course 3
CSE technical elective 3
Elective 3
Elective 3
Total 15
SPRING Credits
CSE advanced course   3 
CSE technical elective  3
CSE technical elective   3 
Elective  3
Elective   3
Total  15
  • SBC refers to the following (five) categories: HUM, SBS, ARTS, USA, GLO
  • CSE 305 , 308
  • CSE 306 , 308

Harvard SEAS logo

Sample schedules and plans of study

Here are some suggested paths for the the Computer Science concentration based on the new (Fall 2021) concentration requirements. These are just examples: there are many possible pathways through the degree. Interested students should consult with the Director of Undergraduate Studies for guidance.

We recommend students also look at our unofficial guides in the resources page , as well as talk to one of our peer concentration advisors . Plenty of other combinations are possible! 

Fall: CS 50 (fulfills programming 1 ) and one of Applied Math 22a Solving and Optimizing or Math 23a/22a/21b/25a/55a: Linear Algebra (fulfills linear algebra ). (See this pamphlet by the math department on the difference between the various courses.)

Spring: CS 32 or CS 50 Spring if you did not take CS 50 in the fall. Otherwise, take CS 51 (fulfills programming 2 ). We also recommend to take CS 20 (fulfills discrete mathematics and one of three formal reasoning courses).

If you do not place out, you need to take Math Ma/Mb/1a/1b before linear algebra.

If you have significant CS experience and decide to skip CS 50, you can take either CS 61, or CS 120/CS 121 (depending whether your strengths are more in systems programming or mathematics) in the fall.

If you are comfortable with mathematical proofs, you may be able to skip CS 20. The CS 121 background page can help you decide if that’s the case.

You can also choose to take CS 61 as your second programming course in your sophomore fall, or defer CS 51 to sophomore spring.

Sophomore year

Fall: Take either CS 121 or CS 120. Both count as formal reasoning courses, and also fulfill the computational limitations tag. CS 120 also fulfills the algorithms tag. We also recommend students take STAT 110, which fulfills the statistics/probability tag. Another potential course to take is CS 61 that fulfills the programming 2 and systems tags.

Spring: CS 124 which counts as a formal reasoning course and also fulfills the intermediate algorithms tag. Intermediate algorithms is recommended for all concentrators, and is required for the honors track. You can also take CS 51 (if didn’t take it before) or a different CS technical elective.

Junior and senior year

Take electives per your interests. You might also want to consider pursuing a research project via CS 91r . You can also explore taking courses at MIT that pique your interest.

Some sample schedules

Here are some example plans that are meant to be examples of ways to meet the requirements. However, students do not have to follow any of these plans, and are free to make their own plan of study as long as it satisfies the requirements. None of the plans below requires more than two concentration courses per semester. With careful planning, a student can start in Math Ma and complete an honors plan with 2 concentration courses per semester. For more examples, please check out our GoogleSheet . Each tab is a different plan (Basic, Honors, Joint, MBB). While we offer several examples, please know that you are welcome to speak with an advisor about your specific situation.

A student who started at Math Ma and took an alternate on-ramp in CS (CS 1)

Course Requirement Met Requirement Met Is Advanced CS? Semester # Semester Notes
Math Ma Calculus 1 First year fall
Math Mb Calculus 2 First year spring
Math 1b Calculus 3 Sophomore Fall
Math 21b Linear Algebra 4 Sophomore Spring
Stat 110 Probability 5 Junior Fall
CS 50 Programming 1 3 Sophomore Fall P/F or Sat/Unsat OK
CS 51 Programming 2 6 Junior Spring
CS 20 Formal Reasoning (Discrete Math) 4 Sophomore Spring
CS 120 Formal Reasoning (Computational Limitations) Formal Reasoning (Algorithms) Advanced Computer Science 5 Junior Fall
CS 152 Formal Reasoning Advanced Computer Science 8 Senior Spring
CS 61 Systems 7 Senior Fall
CS 182 Computation and the World Advanced Computer Science 7 Senior Fall
CS 179 Advanced Computer Science 8 Senior Spring P/F OK
CS 1 2 First year spring P/F OK

Honors Plan

Student started in Math 1a

Course Requirement Met Requirement Met Is Advanced CS? Semester # Semester Notes
Math 1a Calculus 1 First Year Fall
Math 1b Calculus 2 First Year Spring
Math 21b Linear Algebra 3 Sophomore Fall
Stat 110 Probability 5 Junior Fall
CS 50 Programming 1 1 First Year Fall Sat/Unsat or P/F OK
CS 51 Programming 2 2 First Year Spring
CS 20 Formal Reasoning (Discrete Math) 4 Sophomore Spring
CS 120 Formal Reasoning (Computational Limitations) Advanced Computer Science 5 Junior Fall
CS 124 Formal Reasoning (Intermediate Algorithms) Advanced Computer Science 6 Junior Spring
CS 61 Systems 3 Sophomore Fall
CS 126 Computation and the World Advanced Computer Science 7 Senior Fall
CS 181 Artificial Intelligence Advanced Computer Science 8 Senior Spring
CS 100 Advanced Computer Science 7 Senior Fall P/F OK
AM 120 6 Junior Spring P/F OK
ES 50 4 Sophomore Spring P/F OK

Joint Concentrator

Student started in Math 21b

Course Requirement Met Requirement Met Is Advanced CS? Semester # Semester Notes
Math 21b Linear Algebra 1 First Year Fall
Stat 110 Probability 3 Sophomore Fall
CS 50 Programming 1 1 First Year Fall Sat/Unsat or P/F OK
CS 51 Programming 2 2 First Year Spring
CS 20 Formal Reasoning (Discrete Math) 2 First Year Spring
CS 120 Formal Reasoning (Computational Limitations) Formal Reasoning (Algorithms) Advanced Computer Science 3 Sophomore Fall
CS 124 Formal Reasoning Advanced Computer Science 4 Sophomore Spring
CS 61 Systems 5 Junior Fall
CS 175 Computation and the World Advanced Computer Science 6 Junior Spring
CS 91r Advanced Computer Science 7 Senior Fall P/F OK

Joint Concentrator with Strong Math Background, loves Math/Theory

Course Requirement Met Requirement Met Is Advanced CS? Semester # Semester Notes
Math 55a Linear Algebra (self-studies discrete math) 1 First Year Fall
Stat 110 Probability 3 Sophomore Fall
CS 50 Programming 1 1 First Year Fall Sat/Unsat or P/F OK
CS 61 Programming 2 Systems 5 Junior Fall
CS 183 Formal Reasoning Advanced Computer Science 4 Sophomore Spring
CS 121 Formal Reasoning (Computational Limitations) Advanced Computer Science 3 Sophomore Fall
CS 124 Formal Reasoning (Algorithms) Advanced Computer Science 2 First Year Spring
CS 126 Computation and the World Advanced Computer Science 5 Junior Fall
CS 127 Advanced Computer Science 6 Junior Spring P/F OK
CS 91r Advanced Computer Science 7 Senior Fall P/F OK

Mind, Brain, Behavior Program

Course Requirement Met Requirement Met Is Advanced CS? Semester # Semester Notes
Math 21b Linear Algebra 1 First Year Fall
Stat 110 Probability 3 Sophomore Fall
CS 50 Programming 1 1 First Year Fall Sat/Unsat or P/F OK
CS 51 Programming 2 2 First Year Spring
CS 20 Formal Reasoning (Discrete Math) 2 First Year Spring
CS 120 Formal Reasoning (Computational Limitations) Advanced Computer Science 3 Sophomore Fall
CS 124 Formal Reasoning (Intermediate Algorithms) Advanced Computer Science 4 Sophomore Spring
CS 61 Systems 5 Junior Fall
CS 182 Computation and the World Artificial Intelligence Advanced Computer Science 7 Senior Fall
MCB 80 MCB (Neuro) 80 5 Junior Fall
PSY 1401 Approved Bio/Psych Course 6 Junior Spring
MBB 980x Approved MBB Junior Tutorial 6 Junior Spring
CS 91r Elective Advanced Computer Science 7 Senior Fall P/F OK

Computer Science

University of California, Berkeley

About the Program

Choosing a computer science path.

There are two ways to study Computer Science (CS) at UC Berkeley:

  • Be admitted to the Electrical Engineering & Computer Sciences (EECS) major in the College of Engineering (COE) as a first year or junior transfer. Admission to the COE, however, is extremely competitive. This option leads to a Bachelor of Science (BS) degree. This path is appropriate for people who want an engineering education.
  • Be admitted to the Computer Science (CS) major in the College of Computing, Data Science, and Society (CDSS) as a first year or junior transfer. Admission to the CS major in the College of CDSS, however, is extremely competitive. This option leads to a Bachelor of Arts (BA) degree. This path is appropriate for people who are interested in a broader education in the sciences and arts.

There is no difference in the CS course content between the BS and BA programs. The difference is in what else you take: mainly engineering, or mainly humanities and social sciences. In particular, an interest in hardware suggests the EECS route.

Note: Beginning Fall 2024, students will no longer be able to apply to the Computer Science major in the College of Letters and Science on the UC Berkeley application. Going forward, students will need to apply to the Computer Science major in the College of CDSS.

Bachelor of Science (BS) in Computer Science

For information regarding the BS degree, please see the  Electrical Engineering and Computer Sciences program  information in this Guide. 

Bachelor of Arts (BA) in Computer Science

This CS major is for students enrolled in the College of Computing, Data Science, and Society ( CDSS ). Berkeley emphasizes the science of computer science, which means much more than just computer programming. It includes the theory of computation, the design and analysis of algorithms, the architecture and logic design of computers, programming languages, compilers, operating systems, scientific computation, computer graphics, databases, artificial intelligence, and natural language processing. Our goal is to prepare students both for a possible research career and long-term technical leadership in industry. We must therefore look beyond today's technology and give students the primary ideas and the learning skills that will prepare them to teach themselves about tomorrow's technology.

Five-Year BS/MS Program

This program is geared toward students who would like to pursue an education beyond the BS/BA, allowing them to achieve greater breadth and/or depth of knowledge, and who would like to try their hand at research as well. For information, please see the Five-Year BS/MS Requirements tab on this page. 

Honors Program

Computer Science majors with an overall GPA of 3.70 or above are eligible to apply to the EECS honors degree program.

Minor Program

A minor in Computer Science is available to all undergraduate students at Berkeley with a declared major, with the exception of EECS majors. For information regarding minor requirements, please see the Minor Requirements tab on this page.

Visit Department Website

Major Requirements (BA)

In addition to the University, campus, and college requirements, listed on the College Requirements tab, students must fulfill the below requirements specific to their major program.

General Guidelines

  • All courses taken to fulfill the major requirements below must be 3 or more units and taken for a letter grade.

All courses for the major must be technical in nature. Courses numbered 199, 198, 197, 196, 195, plus select 194, 191, 190, and various seminars do not count. If you are unsure, please check with the CS advisers ( [email protected] ).

  • Only  one upper division course may be used to simultaneously fulfill requirements for a student's major and minor programs.  No more than two upper division courses can overlap between two majors.
  • A minimum grade point average (GPA) of 2.0 must be maintained in both upper and lower division courses used to fulfill the major requirements.

For information regarding residence requirements and unit requirements, please see the College Requirements tab.

Course List
CodeTitleUnits
The Structure and Interpretation of Computer Programs4
Data Structures4
Discrete Mathematics and Probability Theory4

Lower Division Requirement

Course List
CodeTitleUnits
Calculus4
Calculus4
Linear Algebra and Differential Equations 4
or  Designing Information Devices and Systems I
or  Linear Algebra
Great Ideas of Computer Architecture (Machine Structures)4

Upper Division Requirements

Course List
CodeTitleUnits
Select one design course from the following:
Computer Architecture and Engineering4
User Interface Design and Development4
Computer Security (effective Spring 2019)4
Operating Systems and System Programming4
Programming Languages and Compilers4
Introduction to the Internet: Architecture and Protocols4
COMPSCI 169Course Not Available
Introduction to Software Engineering4
Software Engineering Team Project4
Intro to Computer Vision and Computational Photography4
Designing, Visualizing and Understanding Deep Neural Networks4
Foundations of Computer Graphics4
Introduction to Database Systems4
Introduction to Embedded and Cyber Physical Systems4
Introduction to Digital Design and Integrated Circuits3
Introduction to Robotics4
Robotic Manipulation and Interaction4
Feedback Control Systems4
Integrated-Circuit Devices4
Linear Integrated Circuits4
Microfabrication Technology4
Mechatronic Design Laboratory4
Select 8 units upper-division CS courses and 8 units upper-division CS/EE/EECS courses from the following, or from the above list.
( , STAT/DATA/COMPSCI C100, and Data 101 are the only non CS/EE/EECS titled classes that may be used to fulfill this requirement)
Principles & Techniques of Data Science4
or  Principles & Techniques of Data Science
Computer Security4
Efficient Algorithms and Intractable Problems4
Computability and Complexity4
Algorithms for Computational Biology4
Introduction to Artificial Intelligence4
Introduction to Machine Learning4
Introduction to Quantum Computing4
Special Topics (15-Parallel Computing, 16-Introduction to Data Science [discontinued], 26-Computational Photography, 28-Computational Design and Fabrication, 30-Practical Networking, 31-Technology and Social Networks, 32-Computing for Social Good, 34-Cryptography [spring 2019], 35-Data Engineering, 73-Software Engineering for Scientific Computing, 80-Full Stack Deep Learning, 100-EECS for All: Social Justice in EECS, 126-PCP Design, 129-Designing, Visualizing and Understanding Deep Neural Networks [also fulfills design requirement], 131-Designing Technology to Counter Violent Extremism [Des Inv 190 does not count], 133-Collaborative Intelligent Agents and The DARPA Spectrum Challenge, 138-Cyberwar, 172-Computational Genomics, 177-Intro to Decentralized Finance, 196-Technology of Decentralization and Decentralized Intelligence, 198-Networks: Models, Processes & Algorithms, 224-Entrepreneurship in Web3, and 238-Special Topics in Zero Knowledge Proof.)4
DATA 101Course Not Available4
Microelectronic Devices and Circuits4
Power Electronics4
Electromagnetic Fields and Waves4
Introduction to Optical Engineering4
Signals and Systems4
Introduction to Digital Communication Systems4
Introduction to Communication Networks4
Digital Signal Processing4
Probability and Random Processes4
Optimization Models in Engineering4
Feedback Control Systems4
Integrated-Circuit Devices4
Fundamentals of Photovoltaic Devices4
Introduction to Electric Power Systems4
Introduction to Electric Power Systems4
Linear Integrated Circuits4
Integrated Circuits for Communications4
Fundamental Algorithms for Systems Modeling, Analysis, and Optimization4
Medical Imaging Signals and Systems4
Introductory Electronic Transducers Laboratory3
Introductory Microcomputer Interfacing Laboratory3
Laboratory in the Mechanics of Organisms3
Introduction to Microelectromechanical Systems (MEMS)3
Natural Language Processing4
Technical electives: Effective Summer 2022, in addition to the 20 units of required CS coursework above, 4 units of technical electives must be taken from the list of approved non-computer science technical electives (see list below) for a total of 24 units for the major. See eecs.berkeley.edu/resources/undergrads/cs/degree-reqs/tech-electives for the most current list of approved technical electives. Students may not use CS upper division classes to fulfill the technical elective units. Contact with questions.24

Approved Non-Computer Science Technical Electives

Course List
CodeTitleUnits
Evolution of the Human Brain4
Principles of Computer Aided Architectural Design4
Special Topics in Digital Design Theories and Methods4
Principles of Computer Aided Architectural Design4
Special Topics in Digital Design Theories and Methods4
Advanced Digital Media: Game Design Methods4
Planetary Astrophysics4
All technical upper division undergraduate and graduate courses in BIO ENG, except , , , , and 196
All technical upper division undergraduate and graduate courses in CHEM
All technical upper division undergraduate and graduate courses in CHEM ENG, except CHEM ENG 180 and 185
All technical upper division undergraduate and graduate courses in CIV ENG, except , , CIV ENG 252L, and CIV ENG 290R
Cognitive Linguistics4
Computational Models of Cognition4
or  Computational Models of Cognition
Principles & Techniques of Data Science4
DATA 101Course Not Available4
Data, Inference, and Decisions4
Human Contexts and Ethics of Data - DATA/History/STS4
Probability for Data Science4
Data Mining and Analytics3
Microeconomics4
Macroeconomics4
Microeconomics (Math Intensive)4
Macroeconomics (Math Intensive)4
Financial Economics4
Econometrics4
Econometrics (Math Intensive)4
Economic Demography4
All technical upper division undergraduate and approved graduate courses in EL ENG
All technical upper division undergraduate and graduate courses in ENGIN, except ENGIN 102, ,
Mathematical Methods in Geophysics4
Planetary Astrophysics4
Global Climate Variability and Change4
Cartographic Representation5
Geographic Information Analysis4
Geographic Information Science4
IND ENG 185Course Not Available (Blockchain)
IND ENG 185Course Not Available (Internet and Data Privacy)
All technical upper division undergraduate and graduate courses in IND ENG, except , select 185, 186, 190 series, and 191 series
Natural Language Processing4
Introduction to User Experience Design4
Theory and Practice of Tangible User Interfaces4
All technical upper division undergraduate and graduate courses in integrative biology
Cognitive Linguistics4
Introduction to Linguistic Science4
Syntax4
All technical upper division undergraduate and graduate courses in MATH, except
All technical upper division undergraduate and graduate courses in MECH ENG, except 191K
All technical upper division undergraduate and graduate courses in MCELLBI
Music Perception and Cognition4
Sound and Music Computing with CNMAT Technologies4
Computer Programming for Music Applications4
Advanced Topics in Computer Music4
All technical upper division undergraduate and graduate courses in PHYSICS
Special Topics in New Media (1/290-Critical Practices)4
Critical Making4
Special Topics in New Media (Making Sense of Cultural Data)4
Intermediate Logic4
Intermediate Logic4
Modal Logic4
Game Theory in the Social Sciences4
Game Theory in the Social Sciences4
Computational Models of Cognition4
Introduction to Probability and Statistics in Biology and Public Health4
Introduction to Epidemiology and Human Disease4
Public Health Microbiology4
Infectious Disease Modeling2-4
All technical upper division undergraduate and graduate courses in STAT
Sound Design for Performance4
Introduction to Finance4
Intermediate Financial Accounting 14
Intermediate Financial Accounting 24

Five-Year BS/MS

This program is geared toward students who would like to pursue an education beyond the BS/BA, allowing them to achieve greater breadth and/or depth of knowledge, and who would like to try their hand at research as well. It is not intended for students who have definitely decided to pursue a PhD immediately following graduation. Those students are advised to apply for a PhD program at Berkeley or elsewhere during their senior year. Students who have been accepted into the Five-Year BA/MS or BS/MS are free to change their minds later and apply to enter the PhD program or apply to a PhD program at another university. Note that admission is competitive with all our PhD applicants.

The program is focused on interdisciplinary training at a graduate level; with at least 8 units of course work outside EECS required. Students will emerge as leaders in their technical and professional fields.

  • Focused on interdisciplinary study and more experience in aligned technical fields such as physics, materials science, statistics, biology, etc., and/or professional disciplines such as management of technology, business, law, and public policy.
  • If admitted to the program, students must begin the graduate portion in the semester immediately following the conferral of the bachelor's degree.
  • Only one additional year (two semesters) beyond the bachelor's degree.
  • Only available to Berkeley EECS and CDSS CS undergraduates.
  • Participants in the program may serve as graduate student instructors (GSIs) with approval from their faculty research advisor and the Five-Year MS Committee.
  • Participants in the program are self-funded.

For further information regarding this program, please see visit the EECS Joint Bachelor's/Master's program page .

Minor Requirements

Students who have a strong interest in an area of study outside their major often decide to complete a minor program. These programs have set requirements and are noted officially on the diploma and the awards section of the transcript.

All minors must be declared before the first day of classes in your Expected Graduation Term (EGT). For summer graduates, minors must be declared prior to the first day of Summer Session A. 

All upper-division courses must be taken for a letter grade. 

A minimum of three of the upper-division courses taken to fulfill the minor requirements must be completed at UC Berkeley.

A minimum grade point average (GPA) of 2.0 is required in the upper-division courses to fulfill the minor requirements.

Courses used to fulfill the minor requirements may be applied toward the Seven-Course Breadth requirement, for Letters & Science students.

No more than one upper division course may be used to simultaneously fulfill requirements for a student's major and minor programs.

All minor requirements must be completed prior to the last day of finals during the semester in which the student plans to graduate. If students cannot finish all courses required for the minor by that time, they should see a College of Letters & Science adviser.

All minor requirements must be completed within the unit ceiling. (For further information regarding the unit ceiling, please see the College Requirements tab.)

Requirements

Course List
CodeTitleUnits
Lower Division Prerequisites
The Structure and Interpretation of Computer Programs4
Data Structures4
or  Data Structures and Programming Methodology
Great Ideas of Computer Architecture (Machine Structures)4
Discrete Mathematics and Probability Theory4
Upper Division
Select three upper-division, technical courses in Computer Science or EECS

College Requirements

Essential skills, computational reasoning.

The Computational Reasoning requirement is designed to provide a basic understanding of and competency in concepts such as programming, algorithms, iteration, and data-structures.

Human and Social Dynamics of Data and Technology

The Human and Social Dynamics of Data and Technology requirement is designed for the purpose of developing an understanding of how technology and data interact with human and societal contexts, including ethical considerations and applications such as education, health, law, natural resources, and public policy.

Statistical Reasoning  

The Statistical Reasoning requirement is designed to provide basic understanding of and competency in the scientific approach to statistical problem solving, including uncertainty, prediction, and estimation.

Reading and Composition

The Reading and Composition requirement is the same as for the College of Letters and Science; it requires two semesters of lower division work in composition in sequence. Students must complete parts A & B reading and composition courses in sequential order by the end of their fourth semester.

To see how to satisfy the R&C requirement, visit the College of Letters and Science Reading and Composition Requirement page .   

Breadth Requirements

The undergraduate breadth requirements are the same for CDSS students as for the College of Letters and Science, with the exception that a second semester foreign language course can be used to satisfy the International Studies breadth. To learn more about the L&S Seven-Course Breadth Requirement, visit the L&S Breadth Requirements page. To learn more about using a foreign language course to satisfy the International Studies breadth, visit the CDSS website page on Satisfying International Studies Breadth with a Foreign Language Course . 

The undergraduate major programs in computer science, data science, and statistics have transitioned from the College of Letters & Science to CDSS. Students who were admitted in Spring 2024 or earlier have the option of completing either the L&S College Requirements , i.e., the breadth and essential skills requirements, or the CDSS college requirements (above). 

All students must meet CDSS general policy (below). The one exception is with time-to-degree. Students admitted Fall 2022 or earlier are subject to the 130 unit maximum, rather than the 8 semester maximum (5 for transfer students). 

Class Schedule Requirements

Minimum units per semester: 12

Maximum units per semester: 20.5

Academic (Grade) Requirements

Minimum cumulative GPA: 2.0

Minimum GPA for one semester: 1.5

Bachelor’s Degree Requirements

Minimum total units: 120. Of these 120 units:

PE maximum units:  4

Special Studies maximum units: 16

Maximum 300-499 course units: 6

Minimum upper division units: 36

Maximum number of semesters: 8 for first-year entrants; 5 for transfer students; summer terms do not count toward the maximum

Minimum GPA in upper division and graduate courses identified for the major: 2.0

Meet all major requirements

M eet all general, curricular, and residence requirements of the University of California and the Berkeley campus

For more information about CDSS requirements, visit student resources and information on the College of Computing, Data Science, and Society website.

UC and Campus Requirements

University of california requirements, entry level writing.

All students who will enter the University of California as freshmen must demonstrate their command of the English language by satisfying the Entry Level Writing Requirement (ELWR).  The  UC Entry Level Writing Requirement website  provides information on how to satisfy the requirement.

American History and American Institutions

The American History and Institutions (AH&I) requirements are based on the principle that a US resident graduated from an American university should have an understanding of the history and governmental institutions of the United States.

Campus Requirement

American cultures.

The American Cultures requirement is a Berkeley campus requirement, one that all undergraduate students at Berkeley need to pass in order to graduate. You satisfy the requirement by passing, with a grade not lower than C- or P, an American Cultures course. You may take an American Cultures course any time during your undergraduate career at Berkeley. The requirement was instituted in 1991 to introduce students to the diverse cultures of the United States through a comparative framework. Courses are offered in more than fifty departments in many different disciplines at both the lower and upper division level.

Plan of Study (BA)

For more detailed information regarding the courses listed below (e.g., elective information, GPA requirements, etc.,), please see the Major Requirements tab.

Freshman
FallUnitsSpringUnits 
4 4 
4 4 
Reading & Composition A4Reading & Composition B4 
CDSS Breadth3CDSS Breadth3 
 15 15
Sophomore
FallUnitsSpringUnitsSummerUnits
4 4Internship , , or 4CDSS Breadth4 Lower/Upper Division Elective4American Cultures Reqt4Study AbroadLower Division Elective3  
 15 12 0
Junior
FallUnitsSpringUnitsSummerUnits
4Upper Division CS major course (2 of 5)4InternshipUD CS major course (1 of 5)4Upper Division CS major course (3 of 5)4 CDSS Breadth4Lower/Upper Division Elective3Study AbroadLower/Upper Division Elective3CDSS Breadth4 
 15 15 0
Senior
FallUnitsSpringUnits 
Upper Division CS major course (4 of 5)4Upper Division CS major course (5 of 5)4 
Upper Division Elective major non-CS technical elective4Lower/Upper Division Elective4 
UD CDSS Elective4Lower/Upper Division Elective3 
UD CDSS Elective3  
 15 11
Total Units: 113

Course Definitions

Upper Division major CS major course: course meeting the 20 units of upper division CS requirement (at least one of these must be a Design Course).

Upper Division major technical elective: course meeting the 4 units of non-CS technical electives requirement.

This is a sample program plan. This plan assumes that the student has completed the Entry Level Writing, American History and Institutions, Quantitative Reasoning, and Foreign Language requirements prior to admission.

Students are strongly advised to work with an academic adviser to determine a personal program plan. Your program plan will differ depending on previous credit received, your course schedule, and available offerings.

COMPSCI 152 , COMPSCI 162 , COMPSCI 164 , COMPSCI 169 , COMPSCI 170 ,  COMPSCI 184 , and EECS 151 are known to have heavy workloads. It is not recommended to take these courses in combination.

Students are strongly advised to work with an academic adviser to determine a personal program plan. Your program plan will differ depending on previous credit received, your course schedule, and available offerings. Current students may make an appointment with a Computer Science Advisor in CalCentral; prospective students may make an appointment at https://berkeleycs.youcanbook.me/.

Accelerated Program Plans

For students considering graduating in less than four years, it's important to acknowledge the reasons to undertake such a plan of study. While there are advantages to pursuing a three-year degree plan such as reducing financial burdens, they are not for everyone and do involve sacrifices; especially with respect to participating in co-curricular activities, depth of study,  and summer internships, which typically lead to jobs upon graduation. All things considered, please see the tables for three and three and a half year degree options.

3.5 and 3 Year Plans

Student Learning Goals

  • Preparing graduates to pursue postgraduate education in electrical engineering, computer science, or related fields.
  • Preparing graduates for success in technical careers related to electrical and computer engineering, or computer science and engineering.
  • Preparing graduates to become leaders in fields related to electrical and computer engineering or computer science and engineering.

Learning Goals for the Major

  • An ability to apply knowledge of mathematics, science, and engineering.
  • An ability to configure, apply test conditions, and evaluate outcomes of experimental systems.
  • An ability to design systems, components, or processes that conform to given specifications and cost constraints.
  • An ability to work cooperatively, respectfully, creatively, and responsibly as a member of a team.
  • An ability to identify, formulate, and solve engineering problems.
  • An understanding of the norms of expected behavior in engineering practice and their underlying ethical foundations.
  • An ability to communicate effectively by oral, written, and graphical means.
  • An awareness of global and societal concerns and their importance in developing engineering solutions.
  • An ability to independently acquire and apply required information, and an appreciation of the associated process of lifelong learning.
  • A knowledge of contemporary issues.
  • An in-depth ability to use a combination of software, instrumentation, and experimental techniques practiced in circuits, physical electronics, communication, networks and systems, hardware, programming, and computer science theory.

Major maps are experience maps that help undergraduates plan their Berkeley journey based on intended major or field of interest. Featuring student opportunities and resources from your college and department as well as across campus, each map includes curated suggestions for planning your studies, engaging outside the classroom, and pursuing your career goals in a timeline format.

Use the major map below to explore potential paths and design your own unique undergraduate experience:

View the Computer Science Major Map.

Select a subject to view courses

Electrical Engineering and Computer Sciences

Electrical Engineering

Eecs 16a designing information devices and systems i 4 units.

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024 This course and its follow-on course EECS16B focus on the fundamentals of designing modern information devices and systems that interface with the real world. Together, this course sequence provides a comprehensive foundation for core EECS topics in signal processing, learning, control, and circuit design while introducing key linear-algebraic concepts motivated by application contexts. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises. The courses are aimed at entering students as well as non-majors seeking a broad foundation for the field. Designing Information Devices and Systems I: Read More [+]

Rules & Requirements

Prerequisites: MATH 1A and MATH 1B (1B may be taken concurrently); COMPSCI 61A (encouraged to be taken concurrently)

Hours & Format

Fall and/or spring: 15 weeks - 3 hours of lecture, 2 hours of discussion, and 3 hours of laboratory per week

Summer: 8 weeks - 6 hours of lecture, 4 hours of discussion, and 6 hours of laboratory per week

Additional Format: Three hours of lecture and three hours of laboratory and two hours of discussion per week. Six hours of lecture and six hours of laboratory and four hours of discussion per week for 8 weeks.

Additional Details

Subject/Course Level: Electrical Engin and Computer Sci/Undergraduate

Grading/Final exam status: Letter grade. Final exam required.

Instructors: Alon, Arcak, Ayazifar, Maharbiz, Niknejad, Ranade, Sahai, Subramanian, Tomlin

Formerly known as: Electrical Engineering 16A

Designing Information Devices and Systems I: Read Less [-]

EECS 16B Designing Information Devices and Systems II 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 This course is a follow-on to EECS 16A , and focuses on the fundamentals of designing and building modern information devices and systems that interface with the real world. The course sequence provides a comprehensive introduction to core EECS topics in machine learning, circuit design, control, and signal processing while developing key linear-algebraic concepts motivated by application contexts. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper exercises. The courses are aimed at entering students as well as non-majors seeking a broad introduction to the field. Designing Information Devices and Systems II: Read More [+]

Prerequisites: EECS 16A

Additional Format: Three hours of lecture and two hours of discussion and three hours of laboratory per week. Six hours of lecture and four hours of discussion and six hours of laboratory per week for 8 weeks.

Instructors: Alon, Ayazifar, Lustig, Maharbiz, Subramanian, Tomlin

Formerly known as: Electrical Engineering 16B

Designing Information Devices and Systems II: Read Less [-]

EECS 47D Completion of work in Electrical Engineering 16A 1 - 3 Units

Terms offered: Fall 2021 This course allows students who have had a linear algebra and/or basic circuit theory course to complete the work in EE16A and be ready for EE16B or EE47E. The course focuses on the fundamentals of designing modern information devices and systems that interface with the real world and provides a comprehensive foundation for core EECS topics in signal processing, learning, control, and circuit design. Modeling is emphasized in a way that deepens mathematical maturity , and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises. Completion of work in Electrical Engineering 16A: Read More [+]

Prerequisites: MATH 1A , MATH 1B , COMPSCI 61A (encouraged to be taken concurrently), college level courses in linear algebra and/or circuit theory, and consent of the instructor

Fall and/or spring: 15 weeks - 2-8 hours of self-paced per week

Summer: 8 weeks - 4-13 hours of self-paced per week

Additional Format: Two to eight hours of self-paced per week. Four to thirteen hours of self-paced per week for 8 weeks.

Completion of work in Electrical Engineering 16A: Read Less [-]

EECS 47E Completion of work in Electrical Engineering 16B 1 - 3 Units

Terms offered: Prior to 2007 This course allows students who have had a linear algebra and/or basic circuit theory course to complete the work in EE16B. The course focuses on the fundamentals of designing modern information devices and systems that interface with the real world and provides a comprehensive foundation for core EECS topics in signal processing (DFT), learning (SVD/PCA), feedback control, and circuit design. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises. Completion of work in Electrical Engineering 16B: Read More [+]

Prerequisites: MATH 1A , MATH 1B , and COMPSCI 61A ; and EECS 16A , EECS 47D , or MATH 54 ; college level courses in linear algebra and/or circuit theory, and consent of the instructor

Fall and/or spring: 15 weeks - 3-8 hours of self-paced per week

Summer: 8 weeks - 6-16 hours of self-paced per week

Additional Format: Three to eight hours of self-paced per week. Six to sixteen hours of self-paced per week for 8 weeks.

Completion of work in Electrical Engineering 16B: Read Less [-]

EECS 47F Completion of work in Computer Science 70 1 - 3 Units

Terms offered: Prior to 2007 This course allows students who have had a discrete math and/or probability course to complete the work in CS70. Logic, infinity, and induction; applications include undecidability and stable marriage problem. Modular arithmetic and GCDs; applications include primality testing and cryptography. Polynomials; examples include error correcting codes and interpolation. Probability including sample spaces, independence, random variables, law of large numbers; examples include load balancing, existence arguments, Bayesian inference. Completion of work in Computer Science 70: Read More [+]

Prerequisites: Sophomore mathematical maturity, programming experience equivalent to that gained in COMPSCI 61A , a prior college level course on discrete math and/or probability, and consent of the instructor

Instructors: Ranade, Rao, Sahai, Seshia, Vazirani, Walrand

Completion of work in Computer Science 70: Read Less [-]

EECS C106A Introduction to Robotics 4 Units

Terms offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021, Fall 2020, Fall 2019 This course is an introduction to the field of robotics. It covers the fundamentals of kinematics, dynamics, control of robot manipulators, robotic vision, sensing, forward & inverse kinematics of serial chain manipulators, the manipulator Jacobian, force relations, dynamics, & control. We will present techniques for geometric motion planning & obstacle avoidance. Open problems in trajectory generation with dynamic constraints will also be discussed. The course also presents the use of the same analytical techniques as manipulation for the analysis of images & computer vision. Low level vision, structure from motion, & an introduction to vision & learning will be covered. The course concludes with current applications of robotics. Introduction to Robotics: Read More [+]

Prerequisites: Familiarity with linear algebra at the level of EECS 16A / EECS 16B or Math 54. Experience coding in python at the level of COMPSCI 61A . Preferred: experience developing software at the level of COMPSCI 61B and experience using Linux

Credit Restrictions: Students will receive no credit for Electrical Engineering and Computer Science C106A/Bioengineering C106A after completing EE C106A/BioE C125, Electrical Engineering 206A, or Electrical Engineering and Computer Science 206A.

Fall and/or spring: 15 weeks - 3 hours of lecture, 1 hour of discussion, and 3 hours of laboratory per week

Summer: 8 weeks - 6 hours of lecture, 2 hours of discussion, and 6 hours of laboratory per week

Additional Format: Three hours of lecture and one hour of discussion and three hours of laboratory per week. Six hours of lecture and two hours of discussion and six hours of laboratory per week for 8 weeks.

Grading/Final exam status: Letter grade. Alternative to final exam.

Instructor: Sastry

Also listed as: BIO ENG C106A/MEC ENG C106A

Introduction to Robotics: Read Less [-]

EECS C106B Robotic Manipulation and Interaction 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022, Spring 2021, Spring 2020, Spring 2019 The course is a sequel to EECS/BIOE/MEC106A/EECSC206A, which covers the mathematical fundamentals of robotics including kinematics, dynamics and control as well as an introduction to path planning, obstacle avoidance, and computer vision. This course will present several areas of robotics and active vision, at a deeper level and informed by current research. Concepts will include the review at an advanced level of robot control, the kinematics, dynamics and control of multi-fingered hands, grasping and manipulation of objects, mobile robots: including non-holonomic motion planning and control, path planning, Simultaneous Localization And Mapping (SLAM), and active vision. Additional research topics covered at the instructor's discretion. Robotic Manipulation and Interaction: Read More [+]

Prerequisites: EECS C106A / BIO ENG C106A / MEC ENG C106A / EECS C206A or an equivalent course. A strong programming background, knowledge of Python and Matlab, and some coursework in feedback controls (such as EL ENG C128 / MEC ENG C134 ) are also useful. Students who have not taken the prerequisite course should have a strong programming background, knowledge of Python and Matlab, and exposure to linear algebra, Lagrangian dynamics, and feedback controls at the intermediate level. EECS C106A

Credit Restrictions: Students will receive no credit for Electrical Engineering and Computer Science C106B/Bioengineering C106B after completing Electrical Engineering C106B/Bioengineering C125B, Electrical Engineering 206B, or Electrical Engineering and Computer Science 206B.

Additional Format: Three hours of lecture and one hour of discussion and three hours of laboratory per week.

Also listed as: BIO ENG C106B/MEC ENG C106B

Robotic Manipulation and Interaction: Read Less [-]

EECS 107 Introduction to AR/VR and Applications in Metaverse 4 Units

Terms offered: Not yet offered This course develops a fundamental understanding of computer vision (CV) and computer graphics (CG) that underpin the emerging AR/VR and Metaverse applications. The syllabus includes 3D perception, near-eye optics, depth cameras, 3D localization, and immersive 3D user experience. The companion lab helps students to acquire basic AR/VR coding skills in Unity and develop Metaverse applications. The course builds a strong foundation for students to take more advanced course: CS 294-137. Introduction to AR/VR and Applications in Metaverse: Read More [+]

Prerequisites: Familiarity with Linear Algebra at the level of EECS 16A /B or MATH 54 . Experience on coding proficiency and data structures at the level of CS61 A/B

Repeat rules: Course may be repeated for credit with instructor consent.

Fall and/or spring: 15 weeks - 3 hours of lecture and 2 hours of laboratory per week

Additional Format: Three hours of lecture and two hours of laboratory per week.

Grading/Final exam status: Letter grade. Alternate method of final assessment during regularly scheduled final exam group (e.g., presentation, final project, etc.).

Instructor: Yang

Introduction to AR/VR and Applications in Metaverse: Read Less [-]

EECS 126 Probability and Random Processes 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 This course covers the fundamentals of probability and random processes useful in fields such as networks, communication, signal processing, and control. Sample space, events, probability law. Conditional probability. Independence. Random variables. Distribution, density functions. Random vectors. Law of large numbers. Central limit theorem. Estimation and detection. Markov chains. Probability and Random Processes: Read More [+]

Prerequisites: COMPSCI 70 preferred but not required; Familiarity with linear algebra

Credit Restrictions: Students will receive no credit for EECS 126 after completing EE 126.

Fall and/or spring: 15 weeks - 3 hours of lecture and 1 hour of discussion per week

Additional Format: Three hours of lecture and one hour of discussion per week.

Instructor: Ramchandran

Probability and Random Processes: Read Less [-]

EECS 127 Optimization Models in Engineering 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 This course offers an introduction to optimization models and their applications, ranging from machine learning and statistics to decision-making and control, with emphasis on numerically tractable problems, such as linear or constrained least-squares optimization. Optimization Models in Engineering: Read More [+]

Prerequisites: EECS 16A and EECS 16B , or consent of instructor

Credit Restrictions: Students will receive no credit for EECS 127 after taking EECS 227AT or Electrical Engineering 127/227AT.

Additional Format: Three hours of Lecture and One hour of Discussion per week for 15 weeks.

Instructor: El Ghaoui

Formerly known as: Electrical Engineering 127

Optimization Models in Engineering: Read Less [-]

EECS 149 Introduction to Embedded and Cyber Physical Systems 4 Units

Terms offered: Fall 2024, Fall 2023, Fall 2022 This course introduces students to the basics of modeling, analysis, and design of embedded, cyber-physical systems. Students learn how to integrate computation with physical processes to meet a desired specification. Topics include models of computation, control, analysis and verification, interfacing with the physical world, real-time behaviors, mapping to platforms, and distributed embedded systems. The course has a strong laboratory component , with emphasis on a semester-long sequence of projects. Introduction to Embedded and Cyber Physical Systems: Read More [+]

Objectives & Outcomes

Course Objectives: To develop the skills to realize embedded systems that are safe, reliable, and efficient in their use of resources. To learn how to model and design the joint dynamics of software, networks, and physical processes. To learn to think critically about technologies that are available for achieving such joint dynamics.

Prerequisites: COMPSCI 61C and COMPSCI 70 ; EECS 16A and EECS 16B , or permission of instructor

Fall and/or spring: 15 weeks - 3 hours of lecture and 3 hours of laboratory per week

Additional Format: Three hours of lecture and three hours of laboratory per week.

Instructors: Seshia, Lee, Dutta

Introduction to Embedded and Cyber Physical Systems: Read Less [-]

EECS 151 Introduction to Digital Design and Integrated Circuits 3 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 An introduction to digital and system design. The material provides a top-down view of the principles, components, and methodologies for large scale digital system design. The underlying CMOS devices and manufacturing technologies are introduced, but quickly abstracted to higher-levels to focus the class on design of larger digital modules for both FPGAs (field programmable gate arrays) and ASICs (application specific integrated circuits). The class includes extensive use of industrial grade design automation and verification tools for assignments, labs and projects. The class has two lab options: ASIC Lab ( EECS 151LA ) and FPGA Lab ( EECS 151LB ). Students must enroll in at least one of the labs concurrently with the class. Introduction to Digital Design and Integrated Circuits: Read More [+]

Course Objectives: The Verilog hardware description language is introduced and used. Basic digital system design concepts, Boolean operations/combinational logic, sequential elements and finite-state-machines, are described. Design of larger building blocks such as arithmetic units, interconnection networks, input/output units, as well as memory design (SRAM, Caches, FIFOs) and integration are also covered. Parallelism, pipelining and other micro-architectural optimizations are introduced. A number of physical design issues visible at the architecture level are covered as well, such as interconnects, power, and reliability.

Prerequisites: EECS 16A and EECS 16B

Credit Restrictions: Students must enroll concurrently in at least one the lab flavors EECS151LA or EECS151LB. Students wishing to take a second lab flavor next term can sign-up only for that Lab section and receive a Letter grade. The pre-requisite for “Lab-only” enrollment that term will be EECS151 from previous terms.

Instructors: Stojanovic, Wawrzynek

Introduction to Digital Design and Integrated Circuits: Read Less [-]

EECS 151LA Application Specific Integrated Circuits Laboratory 2 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 This lab lays the foundation of modern digital design by first presenting the scripting and hardware description language base for specification of digital systems and interactions with tool flows. The labs are centered on a large design with the focus on rapid design space exploration. The lab exercises culminate with a project design, e.g., implementation of a three-stage RISC-V processor with a register file and caches. The design is mapped to simulation and layout specification. Application Specific Integrated Circuits Laboratory: Read More [+]

Course Objectives: Software testing of digital designs is covered leading to a set of exercises that cover the design flow. Digital synthesis, floor-planning, placement and routing are covered, as well as tools to evaluate timing and power consumption. Chip-level assembly is covered, including instantiation of custom blocks: I/O pads, memories, PLLs, etc.

Prerequisites: COMPSCI 61C , EECS 16A , EECS 16B , and EL ENG 105

Fall and/or spring: 15 weeks - 3 hours of laboratory per week

Additional Format: Three hours of laboratory per week.

Grading/Final exam status: Letter grade. Final exam not required.

Application Specific Integrated Circuits Laboratory: Read Less [-]

EECS 151LB Field-Programmable Gate Array Laboratory 2 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 This lab covers the design of modern digital systems with Field-Programmable Gate Array (FPGA) platforms. A series of lab exercises provide the background and practice of digital design using a modern FPGA design tool flow. Digital synthesis, partitioning, placement, routing, and simulation tools for FPGAs are covered in detail. The labs exercises culminate with a large design project, e.g., an implementation of a full three-stage RISC-V processor system, with caches, graphics acceleration, and external peripheral components. The design is mapped and demonstrated on an FPGA hardware platform. Field-Programmable Gate Array Laboratory: Read More [+]

Prerequisites: EECS 16A , EECS 16B , and COMPSCI 61C ; EL ENG 105 recommended

Field-Programmable Gate Array Laboratory: Read Less [-]

COMPSCI C8 Foundations of Data Science 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024, Fall 2023, Spring 2023, Fall 2022, Spring 2022, Fall 2021, Summer 2021 8 Week Session, Fall 2020 Foundations of data science from three perspectives: inferential thinking, computational thinking, and real-world relevance. Given data arising from some real-world phenomenon, how does one analyze that data so as to understand that phenomenon? The course teaches critical concepts and skills in computer programming and statistical inference, in conjunction with hands-on analysis of real-world datasets, including economic data, document collections, geographical data, and social networks. It delves into social and legal issues surrounding data analysis, including issues of privacy and data ownership. Foundations of Data Science: Read More [+]

Prerequisites: This course may be taken on its own, but students are encouraged to take it concurrently with a data science connector course (numbered 88 in a range of departments)

Credit Restrictions: Students will receive no credit for DATA C8 \ COMPSCI C8 \ INFO C8 \ STAT C8 after completing COMPSCI 8, or DATA 8. A deficient grade in DATA C8 \ COMPSCI C8 \ INFO C8 \ STAT C8 may be removed by taking COMPSCI 8, COMPSCI 8, or DATA 8.

Summer: 8 weeks - 6 hours of lecture and 4 hours of laboratory per week

Additional Format: Three hours of lecture and two hours of laboratory per week. Six hours of lecture and four hours of laboratory per week for 8 weeks.

Subject/Course Level: Computer Science/Undergraduate

Formerly known as: Computer Science C8/Statistics C8/Information C8

Also listed as: DATA C8/INFO C8/STAT C8

Foundations of Data Science: Read Less [-]

COMPSCI 10 The Beauty and Joy of Computing 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024 An introductory course for students with minimal prior exposure to computer science. Prepares students for future computer science courses and empowers them to utilize programming to solve problems in their field of study. Presents an overview of the history, great principles, and transformative applications of computer science, as well as a comprehensive introduction to programming. Topics include abstraction, recursion, algorithmic complexity, higher-order functions, concurrency, social implications of computing (privacy, education, algorithmic bias), and engaging research areas (data science, AI, HCI). Students will program in Snap! (a friendly graphical language) and Python, and will design and implement two projects of their choice. The Beauty and Joy of Computing: Read More [+]

Credit Restrictions: Students will receive no credit for 10 after having taken W10, 61A, 61B, or 61C.

Fall and/or spring: 15 weeks - 2 hours of lecture, 1 hour of discussion, and 4 hours of laboratory per week

Summer: 8 weeks - 4 hours of lecture, 2 hours of discussion, and 8 hours of laboratory per week

Additional Format: Two hours of lecture and one hour of discussion and four hours of laboratory per week. Four hours of lecture and two hours of discussion and eight hours of laboratory per week for 8 weeks.

Instructors: Garcia, Hug

The Beauty and Joy of Computing: Read Less [-]

COMPSCI W10 The Beauty and Joy of Computing 4 Units

Terms offered: Fall 2012 This course meets the programming prerequisite for 61A. An introduction to the beauty and joy of computing. The history, social implications, great principles, and future of computing. Beautiful applications that have changed the world. How computing empowers discovery and progress in other fields. Relevance of computing to the student and society will be emphasized. Students will learn the joy of programming a computer using a friendly, graphical language, and will complete a substantial team programming project related to their interests. The Beauty and Joy of Computing: Read More [+]

Credit Restrictions: Students will receive no credit for W10 after taking 10, 61A, 61B or 61C. A deficient grade in 10 may be removed by taking W10.

Fall and/or spring: 15 weeks - 2 hours of web-based lecture and 5 hours of web-based discussion per week

Summer: 8 weeks - 4 hours of web-based lecture and 10 hours of web-based discussion per week

Additional Format: Two hours of web-based lecture, four hours of web-based laboratory, and one hour of web-based discussion per week. Four hours of web-based lecture, eight hours of web-based laboratory, and two hours of web-based discussion per week for eight weeks.

Online: This is an online course.

COMPSCI 36 CS Scholars Seminar: The Educational Climate in CS & CS61A technical discussions 2 Units

Terms offered: Fall 2019, Fall 2018, Spring 2018 Computer Science 36 is a seminar for CS Scholars who are concurrently taking CS61A: The Structure and Interpretation of Computer Programs. CS Scholars is a cohort-model program to provide support in exploring and potentially declaring a CS major for students with little to no computational background prior to coming to the university. CS 36 provides an introduction to the CS curriculum at UC Berkeley, and the overall CS landscape in both industry and academia—through the lens of accessibility and its relevance to diversity. Additionally, CS36 provides technical instruction to review concepts in CS61A, in order to support CS Scholars’ individual learning and success in the CS61A course. CS Scholars Seminar: The Educational Climate in CS & CS61A technical discussions: Read More [+]

Student Learning Outcomes: Students will know where to find several support services including tutoring, advising, counseling, and career advice. Students will perform as well as possible in the CS61A prerequisite for the CS major. They will also have customized program plans for completing the major within four years.

Prerequisites: Prerequisite satisfied Concurrently: Participating in the CS Scholars program, and concurrently taking COMPSCI 61A

Fall and/or spring: 15 weeks - 2 hours of seminar per week

Additional Format: Two hours of seminar per week.

Grading/Final exam status: Offered for pass/not pass grade only. Alternative to final exam.

Instructor: Hunn

CS Scholars Seminar: The Educational Climate in CS & CS61A technical discussions: Read Less [-]

COMPSCI 39 Freshman/Sophomore Seminar 1.5 - 2 Units

Terms offered: Fall 2023, Spring 2022, Spring 2019 Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25. Freshman/Sophomore Seminar: Read More [+]

Prerequisites: Priority given to freshmen and sophomores

Repeat rules: Course may be repeated for credit when topic changes.

Fall and/or spring: 15 weeks - 2-3 hours of seminar per week

Additional Format: Two to three hours of seminar per week.

Grading/Final exam status: Offered for pass/not pass grade only. Final Exam To be decided by the instructor when the class is offered.

Freshman/Sophomore Seminar: Read Less [-]

COMPSCI 47A Completion of Work in Computer Science 61A 1 Unit

Terms offered: Fall 2024, Spring 2024, Fall 2023 Implementation of generic operations. Streams and iterators. Implementation techniques for supporting functional, object-oriented, and constraint-based programming in the Scheme programming language. Together with 9D, 47A constitutes an abbreviated, self-paced version of 61A for students who have already taken a course equivalent to 61B. Completion of Work in Computer Science 61A: Read More [+]

Prerequisites: COMPSCI 61B , COMPSCI 9D, and consent of instructor

Credit Restrictions: Students will receive no credit for 47A after taking 61A.

Fall and/or spring: 15 weeks - 0 hours of self-paced per week

Additional Format: Zero hour of self-paced per week.

Instructor: Garcia

Completion of Work in Computer Science 61A: Read Less [-]

COMPSCI 47B Completion of Work in Computer Science 61B 1 Unit

Terms offered: Fall 2024, Spring 2024, Fall 2023 Iterators. Hashing, applied to strings and multi-dimensional structures. Heaps. Storage management. Design and implementation of a program containing hundreds of lines of code. Students who have completed a portion of the subject matter of COMPSCI 61B may, with consent of instructor, complete COMPSCI 61B in this self-paced course. Please note that students in the College of Engineering are required to receive additional permission from the College as well as the EECS department for the course to count in place of COMPSCI 61B . Completion of Work in Computer Science 61B: Read More [+]

Prerequisites: A course in data structures, COMPSCI 9G, and consent of instructor

Credit Restrictions: Students will receive no credit for 47B after taking 61B.

Completion of Work in Computer Science 61B: Read Less [-]

COMPSCI 47C Completion of Work in Computer Science 61C 1 Unit

Terms offered: Fall 2024, Spring 2024, Fall 2023 MIPS instruction set simulation. The assembly and linking process. Caches and virtual memory. Pipelined computer organization. Students with sufficient partial credit in 61C may, with consent of instructor, complete the credit in this self-paced course. Completion of Work in Computer Science 61C: Read More [+]

Prerequisites: Experience with assembly language including writing an interrupt handler, COMPSCI 9C, and consent of instructor

Credit Restrictions: Students will receive no credit for COMPSCI 47C after completing COMPSCI 61C , or COMPSCI 61CL.

Completion of Work in Computer Science 61C: Read Less [-]

COMPSCI 61A The Structure and Interpretation of Computer Programs 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024 An introduction to programming and computer science focused on abstraction techniques as means to manage program complexity. Techniques include procedural abstraction; control abstraction using recursion, higher-order functions, generators, and streams; data abstraction using interfaces, objects, classes, and generic operators; and language abstraction using interpreters and macros. The course exposes students to programming paradigms, including functional, object-oriented, and declarative approaches. It includes an introduction to asymptotic analysis of algorithms. There are several significant programming projects. The Structure and Interpretation of Computer Programs: Read More [+]

Prerequisites: MATH 1A (may be taken concurrently) or Math 10A or Math 16A. Programming experience equivalent to that gained from a score of 3 or above on the Advanced Placement Computer Science exam

Credit Restrictions: Students will receive no credit for COMPSCI 61A after completing COMPSCI 47A , COMPSCI 61AS, or COMPSCI W61A . A deficient grade in COMPSCI 61A may be removed by taking COMPSCI 61AS, or COMPSCI W61A .

Fall and/or spring: 15 weeks - 3 hours of lecture, 1.5 hours of discussion, and 1.5 hours of laboratory per week

Summer: 8 weeks - 6 hours of lecture, 3 hours of discussion, and 3 hours of laboratory per week

Additional Format: Three hours of lecture and one and one-half hours of discussion and one and one-half hours of laboratory per week. Six hours of lecture and three hours of discussion and three hours of laboratory per week for 8 weeks.

Instructors: Garcia, Hilfinger

The Structure and Interpretation of Computer Programs: Read Less [-]

COMPSCI 61B Data Structures 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language. Data Structures: Read More [+]

Prerequisites: COMPSCI 61A , COMPSCI 88, or ENGIN 7

Credit Restrictions: Students will receive no credit for COMPSCI 61B after completing COMPSCI 61BL , or COMPSCI 47B . A deficient grade in COMPSCI 61B may be removed by taking COMPSCI 61BL .

Fall and/or spring: 15 weeks - 3 hours of lecture, 1 hour of discussion, and 2 hours of laboratory per week

Summer: 8 weeks - 6 hours of lecture, 2 hours of discussion, and 4 hours of laboratory per week

Additional Format: Three hours of lecture and one hour of discussion and two hours of laboratory per week. Six hours of lecture and two hours of discussion and four hours of laboratory per week for 8 weeks.

Instructors: Hilfinger, Shewchuk

Data Structures: Read Less [-]

COMPSCI 61BL Data Structures and Programming Methodology 4 Units

Terms offered: Summer 2024 8 Week Session, Summer 2023 8 Week Session, Summer 2022 8 Week Session The same material as in 61B, but in a laboratory-based format. Data Structures and Programming Methodology: Read More [+]

Credit Restrictions: Students will receive no credit for COMPSCI 61BL after completing COMPSCI 47B , or COMPSCI 61B . A deficient grade in COMPSCI 61BL may be removed by taking COMPSCI 61B .

Fall and/or spring: 15 weeks - 1 hour of lecture and 6 hours of laboratory per week

Summer: 8 weeks - 2 hours of lecture and 12 hours of laboratory per week

Additional Format: One hour of lecture and six hours of laboratory per week. Two hours of lecture and twelve hours of laboratory per week for 8 weeks.

Instructor: Hilfinger

Data Structures and Programming Methodology: Read Less [-]

COMPSCI 61C Great Ideas of Computer Architecture (Machine Structures) 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024 The internal organization and operation of digital computers. Machine architecture, support for high-level languages (logic, arithmetic, instruction sequencing) and operating systems (I/O, interrupts, memory management, process switching). Elements of computer logic design. Tradeoffs involved in fundamental architectural design decisions. Great Ideas of Computer Architecture (Machine Structures): Read More [+]

Prerequisites: COMPSCI 61A , along with either COMPSCI 61B or COMPSCI 61BL , or programming experience equivalent to that gained in COMPSCI 9C, COMPSCI 9F, or COMPSCI 9G

Credit Restrictions: Students will receive no credit for COMPSCI 61C after completing COMPSCI 61CL.

Additional Format: Two hours of lecture, one hour of discussion, and an average of six hours of self-scheduled programming laboratory per week.

Instructors: Garcia, Katz, Stojanovic

Great Ideas of Computer Architecture (Machine Structures): Read Less [-]

COMPSCI W61A The Structure and Interpretation of Computer Programs (Online) 4 Units

Terms offered: Summer 2019 8 Week Session An introduction to programming and computer science focused on abstraction techniques as means to manage program complexity. Techniques include procedural abstraction; control abstraction using recursion, higher-order functions, generators, and streams; data abstraction using interfaces, objects, classes, and generic operators; and language abstraction using interpreters and macros. The course exposes students to programming paradigms, including functional , object-oriented, and declarative approaches. It includes an introduction to asymptotic analysis of algorithms. There are several significant programming projects. The Structure and Interpretation of Computer Programs (Online): Read More [+]

Prerequisites: MATH 1A (may be taken concurrently); programming experience equivalent to that gained from a score of 3 or above on the Advanced Placement Computer Science A exam

Credit Restrictions: Students will receive no credit for Computer Science W61A after completing Computer Science 47A or Computer Science 61A. A deficient grade in Computer Science W61A may be removed by taking Computer Science 61A.

Fall and/or spring: 15 weeks - 3 hours of web-based lecture, 1.5 hours of laboratory, and 1.5 hours of web-based discussion per week

Summer: 8 weeks - 6 hours of web-based lecture, 3 hours of laboratory, and 3 hours of web-based discussion per week

Additional Format: One and one-half hours of laboratory and one and one-half hours of web-based discussion and three hours of web-based lecture per week. Three hours of laboratory and three hours of web-based discussion and six hours of web-based lecture per week for 8 weeks.

Instructor: Denero

The Structure and Interpretation of Computer Programs (Online): Read Less [-]

COMPSCI 70 Discrete Mathematics and Probability Theory 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024 Logic, infinity, and induction; applications include undecidability and stable marriage problem. Modular arithmetic and GCDs; applications include primality testing and cryptography. Polynomials; examples include error correcting codes and interpolation. Probability including sample spaces, independence, random variables, law of large numbers; examples include load balancing, existence arguments, Bayesian inference. Discrete Mathematics and Probability Theory: Read More [+]

Prerequisites: Sophomore mathematical maturity, and programming experience equivalent to that gained with a score of 3 or above on the Advanced Placement Computer Science A exam

Credit Restrictions: Students will receive no credit for Computer Science 70 after taking Mathematics 55.

Fall and/or spring: 15 weeks - 3 hours of lecture and 2 hours of discussion per week

Summer: 8 weeks - 6 hours of lecture and 4 hours of discussion per week

Additional Format: Three hours of lecture and two hours of discussion per week. Six hours of lecture and four hours of discussion per week for 8 weeks.

Instructors: Rao, Vazirani, Wagner, Sahai

Discrete Mathematics and Probability Theory: Read Less [-]

COMPSCI 84 Sophomore Seminar 1 or 2 Units

Terms offered: Fall 2007 Sophomore seminars are small interactive courses offered by faculty members in departments all across the campus. Sophomore seminars offer opportunity for close, regular intellectual contact between faculty members and students in the crucial second year. The topics vary from department to department and semester to semester. Enrollment limited to 15 sophomores. Sophomore Seminar: Read More [+]

Prerequisites: At discretion of instructor

Fall and/or spring: 5 weeks - 3-6 hours of seminar per week 10 weeks - 1.5-3 hours of seminar per week 15 weeks - 1-2 hours of seminar per week

Summer: 6 weeks - 2.5-5 hours of seminar per week 8 weeks - 2-4 hours of seminar per week

Additional Format: unit(s):one hour of seminar per week; 2 unit(s):two hours of seminar per week. unit(s):one and one-half hours of seminar per week; 2 unit(s):three hours of seminar per week for 10 weeks. unit(s):two hours of seminar per week; 2 unit(s):four hours of seminar per week for 8 weeks. unit(s):two and one-half hours of seminar per week; 2 unit(s):five hours of seminar per week for 6 weeks. unit(s):three hours of seminar per week; 2 unit(s):six hours of seminar per week for five weeks.

Grading/Final exam status: The grading option will be decided by the instructor when the class is offered. Final exam required.

Sophomore Seminar: Read Less [-]

COMPSCI C88C Computational Structures in Data Science 3 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024, Spring 2023, Fall 2022 Development of Computer Science topics appearing in Foundations of Data Science (C8); expands computational concepts and techniques of abstraction. Understanding the structures that underlie the programs, algorithms, and languages used in data science and elsewhere. Mastery of a particular programming language while studying general techniques for managing program complexity, e.g., functional, object-oriented , and declarative programming. Provides practical experience with composing larger systems through several significant programming projects. Computational Structures in Data Science: Read More [+]

Course Objectives: Develop a foundation of computer science concepts that arise in the context of data analytics, including algorithm, representation, interpretation, abstraction, sequencing, conditional, function, iteration, recursion, types, objects, and testing, and develop proficiency in the application of these concepts in the context of a modern programming language at a scale of whole programs on par with a traditional CS introduction course.

Student Learning Outcomes: Students will be able to demonstrate a working knowledge of these concepts and a proficiency of programming based upon them sufficient to construct substantial stand-alone programs.

Prerequisites: This course is a Data Science connector course and may only be taken concurrently with or after COMPSCI C8 / DATA C8 / INFO C8 / STAT C8 . Students may take more than one Data Science connector (88) course if they wish, concurrent with or after having taken the C8 course

Credit Restrictions: Students will receive no credit for DATA C88C after completing COMPSCI 61A .

Fall and/or spring: 15 weeks - 2-2 hours of lecture, 2-2 hours of laboratory, and 0-1 hours of supplement per week

Summer: 8 weeks - 4-4 hours of lecture, 4-4 hours of laboratory, and 0-2 hours of supplement per week

Additional Format: Two hours of lecture and two hours of laboratory and zero to one hours of supplement per week. Four hours of lecture and four hours of laboratory and zero to two hours of supplement per week for 8 weeks.

Instructors: Ball, Culler

Formerly known as: Computer Science 88

Also listed as: DATA C88C

Computational Structures in Data Science: Read Less [-]

COMPSCI C100 Principles & Techniques of Data Science 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024, Summer 2023 8 Week Session, Fall 2022, Fall 2021, Fall 2020 In this course, students will explore the data science lifecycle, including question formulation, data collection and cleaning, exploratory data analysis and visualization, statistical inference and prediction​, and decision-making.​ This class will focus on quantitative critical thinking​ and key principles and techniques needed to carry out this cycle. These include languages for transforming, querying and analyzing data; algorithms for machine learning methods including regression, classification and clustering; principles behind creating informative data visualizations; statistical concepts of measurement error and prediction; and techniques for scalable data processing. Principles & Techniques of Data Science: Read More [+]

Prerequisites: COMPSCI C8 / DATA C8 / INFO C8 / STAT C8 with a C- or better, or Pass; and COMPSCI 61A , COMPSCI/DATA C88C, or ENGIN 7 with a C- or better, or Pass; Corequisite: MATH 54 , 56 or EECS 16A (C- or better, or Pass, required if completed prior to Data C100)

Credit Restrictions: Students will receive no credit for DATA C100 \ STAT C100 \ COMPSCI C100 after completing DATA 100. A deficient grade in DATA C100 \ STAT C100 \ COMPSCI C100 may be removed by taking DATA 100.

Fall and/or spring: 15 weeks - 3-3 hours of lecture, 1-1 hours of discussion, and 0-1 hours of laboratory per week

Summer: 8 weeks - 6-6 hours of lecture, 2-2 hours of discussion, and 0-2 hours of laboratory per week

Additional Format: Three hours of lecture and one hour of discussion and zero to one hours of laboratory per week. Six hours of lecture and two hours of discussion and zero to two hours of laboratory per week for 8 weeks.

Instructors: Gonzalez, Nourozi, Perez, Yan

Formerly known as: Statistics C100/Computer Science C100

Also listed as: DATA C100/STAT C100

Principles & Techniques of Data Science: Read Less [-]

COMPSCI 152 Computer Architecture and Engineering 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 Instruction set architecture, microcoding, pipelining (simple and complex). Memory hierarchies and virtual memory. Processor parallelism: VLIW, vectors, multithreading. Multiprocessors. Computer Architecture and Engineering: Read More [+]

Prerequisites: COMPSCI 61C

Instructors: Asanovic, Culler, Kubiatowicz, Wawrzynek

Computer Architecture and Engineering: Read Less [-]

COMPSCI 160 User Interface Design and Development 4 Units

Terms offered: Summer 2024 8 Week Session, Spring 2024, Summer 2023 8 Week Session The design, implementation, and evaluation of user interfaces. User-centered design and task analysis. Conceptual models and interface metaphors. Usability inspection and evaluation methods. Analysis of user study data. Input methods (keyboard, pointing, touch, tangible) and input models. Visual design principles. Interface prototyping and implementation methodologies and tools. Students will develop a user interface for a specific task and target user group in teams. User Interface Design and Development: Read More [+]

Prerequisites: COMPSCI 61B or COMPSCI 61BL

Credit Restrictions: Students will receive no credit for Computer Science 160 after taking Computer Science 260A.

Summer: 8 weeks - 6 hours of lecture and 2 hours of discussion per week

Additional Format: Three hours of lecture and one hour of discussion per week. Six hours of lecture and two hours of discussion per week for 8 weeks.

Instructors: Agrawala, Canny, Hartmann, Paulos

User Interface Design and Development: Read Less [-]

COMPSCI 161 Computer Security 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024 Introduction to computer security. Cryptography, including encryption, authentication, hash functions, cryptographic protocols, and applications. Operating system security, access control. Network security, firewalls, viruses, and worms. Software security, defensive programming, and language-based security. Case studies from real-world systems. Computer Security: Read More [+]

Prerequisites: COMPSCI 61B , COMPSCI 61C , and COMPSCI 70

Fall and/or spring: 15 weeks - 3-3 hours of lecture and 1-1.5 hours of discussion per week

Summer: 8 weeks - 6-6 hours of lecture and 2-3 hours of discussion per week

Additional Format: Three hours of lecture and one to one and one-half hours of discussion per week. Six hours of lecture and two to three hours of discussion per week for 8 weeks.

Instructors: Paxson, Song, Wagner

Computer Security: Read Less [-]

COMPSCI 162 Operating Systems and System Programming 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Basic concepts of operating systems and system programming. Utility programs, subsystems, multiple-program systems. Processes, interprocess communication, and synchronization. Memory allocation, segmentation, paging. Loading and linking, libraries. Resource allocation, scheduling, performance evaluation. File systems, storage devices, I/O systems. Protection, security, and privacy. Operating Systems and System Programming: Read More [+]

Instructors: Joseph, Kubiatowicz, Stoica

Operating Systems and System Programming: Read Less [-]

COMPSCI 164 Programming Languages and Compilers 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Survey of programming languages. The design of modern programming languages. Principles and techniques of scanning, parsing, semantic analysis, and code generation. Implementation of compilers, interpreters, and assemblers. Overview of run-time organization and error handling. Programming Languages and Compilers: Read More [+]

Prerequisites: COMPSCI 61B and COMPSCI 61C

Instructors: Bodik, Hilfinger, Necula

Programming Languages and Compilers: Read Less [-]

COMPSCI 168 Introduction to the Internet: Architecture and Protocols 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2022 This course is an introduction to the Internet architecture. We will focus on the concepts and fundamental design principles that have contributed to the Internet's scalability and robustness and survey the various protocols and algorithms used within this architecture. Topics include layering, addressing, intradomain routing, interdomain routing, reliable delivery, congestion control, and the core protocols (e.g., TCP, UDP, IP, DNS, and HTTP) and network technologies (e.g., Ethernet, wireless). Introduction to the Internet: Architecture and Protocols: Read More [+]

Prerequisites: COMPSCI 61B and COMPSCI 162

Instructors: Katz, Paxson, Ratnasamy, Shenker, Stoica

Introduction to the Internet: Architecture and Protocols: Read Less [-]

COMPSCI 169A Introduction to Software Engineering 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Fall 2023 Ideas and techniques for designing, developing, and modifying large software systems. Service-oriented architecture, behavior-driven design with user stories, cloud computing, test-driven development, automated testing, cost and quality metrics for maintainability and effort estimation, practical performance and security in software operations, design patterns and refactoring, specification and documentation, agile project team organization and management. Introduction to Software Engineering: Read More [+]

Student Learning Outcomes: Students will learn how to approach and add functionality to a legacy code base; Students will learn how to identify, measure, and resolve maintainability problems in code; Students will learn how to work with nontechnical customers and convert customer requirements into a software plan that can be effort-estimated, built, and deployed to the public cloud, including the use of behavior-driven design, user stories, and velocity; Students will learn how to write automated tests and measure test coverage; Students will learn practical security and performance considerations for SaaS applications. Students will learn the architecture and machinery of software as a service; the agile/XP methodology for software development and how it compares with other methodologies, including "Plan-and-document" methodologies; Students will learn the role of software design patterns in refactoring, and how to identify opportunities to use them;

Prerequisites: COMPSCI C88C or DATA C88C or COMPSCI 61A or COMPSCI 47A ; and COMPSCI 61B or COMPSCI 61BL or COMPSCI 47B

Credit Restrictions: Students will receive no credit for COMPSCI 169A after completing COMPSCI 169, or COMPSCI W169A . A deficient grade in COMPSCI 169A may be removed by taking COMPSCI 169, or COMPSCI W169A .

Instructors: Fox, Ball

Introduction to Software Engineering: Read Less [-]

COMPSCI 169L Software Engineering Team Project 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 Open-ended design project enhancing or creating software for real customers in an agile team setting. Teamwork coordination, effective customer meetings, pre- and post-iteration team meetings, running scrums and standups, technical communication. Contributing as a team to an open-source project; tools and workflows associated with open source collaboration, including fork-and-pull, rebase, upstream merge, continuous deployment & inte gration. Software Engineering Team Project: Read More [+]

Course Objectives: Students will work in a team to develop new software or enhance existing software for a customer with a real business need.

Student Learning Outcomes: Students will learn how to conduct effective meetings with nontechnical customers and work with their feedback; Students will learn how to coordinate teamwork on developing, testing, and deploying features; and in most cases, how to approach a legacy codebase and add features to it. Students will learn to run a small team including rotation of team roles such as product owner, scrum master, and so on;

Prerequisites: COMPSCI 169A or COMPSCI W169A

Credit Restrictions: Students will receive no credit for COMPSCI 169L after completing COMPSCI 169.

Fall and/or spring: 15 weeks - 3 hours of discussion and 8 hours of fieldwork per week

Summer: 8 weeks - 6 hours of discussion and 16 hours of fieldwork per week

Additional Format: Three hours of discussion and eight hours of fieldwork per week. Six hours of discussion and sixteen hours of fieldwork per week for 8 weeks.

Instructors: Fox, Sen

Software Engineering Team Project: Read Less [-]

COMPSCI W169A Software Engineering 3 Units

Terms offered: Summer 2021 8 Week Session, Fall 2020, Summer 2020 8 Week Session This course presents ideas and techniques for designing, developing, and modifying large software systems using Agile techniques and tools. Topics include: function-oriented and object-oriented modular design techniques, designing for re-use and maintainability including proper use of design patterns, behavior-driven design, test-driven development, user stories for requirements elicitation & documentation , verification and validation, cost and quality metrics and estimation, project team organization and management, analyzing and refactoring legacy code. Software Engineering: Read More [+]

Student Learning Outcomes: Students will learn how to apply BDD & TDD to identify the main parts of a legacy code base, measure code quality, and refactor code to improve its quality; Students will learn how to apply behavior-driven development (BDD) to elicit customer needs and express them as user stories that will drive development; Students will learn how to apply the key ideas of learning a new framework to construct and deploy simple Rails applications; Students will learn how to apply the key ideas of learning a new language in order to construct programs in Ruby; Students will learn how to construct unit- and module-level tests and measure their coverage; Students will learn how to exercise best practices in planning, effort estimation, and coordination of the efforts of small software teams, using appropriate tools to support those practices; Students will learn how to identify and repair potential app-level security and performance problems. Students will learn how to recognize when an appropriate Design Pattern may improve code quality, and refactor code to apply those Design Patterns; Students will learn how to summarize the key architectural elements of RESTful SaaS applications and microservices; Students will learn to articulate the primary differences between Agile and Plan-and-Document methodologies;

Prerequisites: COMPSCI 61A and COMPSCI 61B

Credit Restrictions: Students will receive no credit for COMPSCI W169A after completing COMPSCI 169, or COMPSCI 169A . A deficient grade in COMPSCI W169A may be removed by taking COMPSCI 169, or COMPSCI 169A .

Fall and/or spring: 15 weeks - 3 hours of web-based lecture and 1 hour of discussion per week

Summer: 8 weeks - 6 hours of web-based lecture and 0 hours of discussion per week

Additional Format: One hour of discussion and three hours of web-based lecture per week. Zero hour of discussion and six hours of web-based lecture per week for 8 weeks.

Software Engineering: Read Less [-]

COMPSCI 170 Efficient Algorithms and Intractable Problems 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Concept and basic techniques in the design and analysis of algorithms; models of computation; lower bounds; algorithms for optimum search trees, balanced trees and UNION-FIND algorithms; numerical and algebraic algorithms; combinatorial algorithms. Turing machines, how to count steps, deterministic and nondeterministic Turing machines, NP-completeness. Unsolvable and intractable problems. Efficient Algorithms and Intractable Problems: Read More [+]

Prerequisites: COMPSCI 61B and COMPSCI 70

Instructors: Demmel, Papadimitriou, Rao, Wagner, Vazirani

Efficient Algorithms and Intractable Problems: Read Less [-]

COMPSCI 171 Cryptography 4 Units

Terms offered: Spring 2024, Spring 2021 Cryptography or cryptology is the science of designing algorithms and protocols for enabling parties to communicate and compute securely in an untrusted environment (e.g. secure communication, digital signature, etc.) Over the last four decades, cryptography has transformed from an ad hoc collection of mysterious tricks into a rigorous science based on firm complexity-theoretic foundations. This modern complexity-theoretic approach to cryptography will be the focus. E.g., in the context of encryption we will begin by giving a precise mathematical definition for what it means to be a secure encryption scheme and then give a construction (realizing this security notion) assuming various computational hardness assumptions (e.g. factoring). Cryptography: Read More [+]

Prerequisites: COMPSCI 70

Instructor: Garg

Cryptography: Read Less [-]

COMPSCI 172 Computability and Complexity 4 Units

Terms offered: Fall 2024, Fall 2022, Spring 2022 Finite automata, Turing machines and RAMs. Undecidable, exponential, and polynomial-time problems. Polynomial-time equivalence of all reasonable models of computation. Nondeterministic Turing machines. Theory of NP-completeness: Cook's theorem, NP-completeness of basic problems. Selected topics in language theory, complexity and randomness. Computability and Complexity: Read More [+]

Prerequisites: COMPSCI 170

Instructors: Papadimitriou, Seshia, Sinclair, Vazirani

Computability and Complexity: Read Less [-]

COMPSCI 174 Combinatorics and Discrete Probability 4 Units

Terms offered: Spring 2023, Spring 2022, Fall 2019 Permutations, combinations, principle of inclusion and exclusion, generating functions, Ramsey theory. Expectation and variance, Chebychev's inequality, Chernov bounds. Birthday paradox, coupon collector's problem, Markov chains and entropy computations, universal hashing, random number generation, random graphs and probabilistic existence bounds. Combinatorics and Discrete Probability: Read More [+]

Instructors: Bartlett, Papadimitriou, Sinclair, Vazirani

Combinatorics and Discrete Probability: Read Less [-]

COMPSCI 176 Algorithms for Computational Biology 4 Units

Terms offered: Fall 2020, Fall 2018, Fall 2017 Algorithms and probabilistic models that arise in various computational biology applications: suffix trees, suffix arrays, pattern matching, repeat finding, sequence alignment, phylogenetics, genome rearrangements, hidden Markov models, gene finding, motif finding, stochastic context free grammars, RNA secondary structure. There are no biology prerequisites for this course, but a strong quantitative background will be essential. Algorithms for Computational Biology: Read More [+]

Prerequisites: COMPSCI 70 and COMPSCI 170 ; experience programming in a language such as C, C++, Java, or Python

Instructor: Song

Algorithms for Computational Biology: Read Less [-]

COMPSCI C176 Algorithms for Computational Biology 4 Units

Terms offered: Fall 2022 This course will provide familiarity with algorithms and probabilistic models that arise in various computational biology applications, such as suffix trees, suffix arrays, pattern matching, repeat finding, sequence alignment, phylogenetics, hidden Markov models, gene finding, motif finding, linear/logistic regression, random forests, convolutional neural networks, genome-wide association studies, pathogenicity prediction, and sequence-to-epigenome prediction. Algorithms for Computational Biology: Read More [+]

Student Learning Outcomes: Understand the basic elements of molecular, cell, and evolutionary biology. Understand the key probabilistic and machine learning models used in computational biology applications. Understand various data structures and algorithms that arise in computational biology.

Prerequisites: COMPSCI 70 and COMPSCI 170 , MATH 54 or EECS 16A or an equivalent linear algebra course

Credit Restrictions: Students will receive no credit for COMPSCI C176 after completing COMPSCI 176 . A deficient grade in COMPSCI C176 may be removed by taking COMPSCI 176 .

Instructors: Song, Yun, Ioannidis

Also listed as: CMPBIO C176

COMPSCI C177 Algorithmic Economics 4 Units

Terms offered: Spring 2024 The class provides an introduction to algorithmic questions in economic design. The class will cover problems of public goods and social choice, as well as allocative questions and private consumption. The focus is on normative questions: From the perspective of social goals, these are efficiency, fairness, and equity. In terms of private goals, the focus is on revenue maximization. The course will cover voting, fair division, pricing and market mechanisms. There is an emphasis on the algorithmic questions that arise naturally in economic design. Algorithmic Economics: Read More [+]

Prerequisites: Students should be comfortable with formal mathematical proofs, and will be expected to write proofs on their own

Also listed as: ECON C147

Algorithmic Economics: Read Less [-]

COMPSCI 180 Intro to Computer Vision and Computational Photography 4 Units

Terms offered: Fall 2024, Fall 2023 This advanced undergraduate course introduces students to computing with visual data (images and video). We will cover acquisition, representation, and manipulation of visual information from digital photographs (image processing), image analysis and visual understanding (computer vision), and image synthesis (computational photography). Key algorithms will be presented, ranging from classical to contemporary, with an emphasis on using these techniques to build practical systems. The hands-on emphasis will be reflected in the programming assignments, where students will acquire their own images and develop, largely from scratch, image analysis and synthesis tools for real-world applications. Intro to Computer Vision and Computational Photography: Read More [+]

Course Objectives: Students will learn classic algorithms in image manipulation with Gaussian and Laplacian Pyramids, understand the hierarchy of image transformations including homographies, and how to warp an image with these transformations. Students will learn how to apply Convolutional Neural Networks for computer vision problems and how they can be used for image manipulation. Students will learn the fundamentals of 3D vision: stereo, multi-view geometry, camera calibration, structure-from-motion, multi-view stereo, and the plenoptic function. Students will learn the fundamentals of image processing from the mechanics of a pin-hole camera, representation of images as pixels, physics of light and the process of image formation, to manipulating the visual information using signal processing techniques in the spatial and frequency domains.

Student Learning Outcomes: After this class, students will be comfortable implementing, from scratch, these algorithms in modern programming languages and deep learning libraries.

Prerequisites: COMPSCI 61B , COMPSCI 70 , and MATH 53 (or other vector calculus course). MATH 54 , MATH 110 , or EECS 16A . COMPSCI 182 is strongly recommended

Instructors: Efros, Kanazawa

Intro to Computer Vision and Computational Photography: Read Less [-]

COMPSCI 182 Designing, Visualizing and Understanding Deep Neural Networks 4 Units

Terms offered: Fall 2023, Spring 2023, Fall 2022 Deep Networks have revolutionized computer vision, language technology, robotics and control. They have growing impact in many other areas of science and engineering. They do not however, follow a closed or compact set of theoretical principles. In Yann Lecun's words they require "an interplay between intuitive insights, theoretical modeling, practical implementations, empirical studies, and scientific analyses." This course attempts to cover that ground. Designing, Visualizing and Understanding Deep Neural Networks: Read More [+]

Student Learning Outcomes: Students will come to understand visualizing deep networks. Exploring the training and use of deep networks with visualization tools. Students will learn design principles and best practices: design motifs that work well in particular domains, structure optimization and parameter optimization. Understanding deep networks. Methods with formal guarantees: generative and adversarial models, tensor factorization.

Prerequisites: MATH 53 , MATH 54 , and COMPSCI 61B ; COMPSCI 70 or STAT 134 ; COMPSCI 189 is recommended

Credit Restrictions: Students will receive no credit for COMPSCI 182 after completing COMPSCI W182, or COMPSCI L182. A deficient grade in COMPSCI 182 may be removed by taking COMPSCI W182, or COMPSCI L182.

Instructor: Canny

Designing, Visualizing and Understanding Deep Neural Networks: Read Less [-]

COMPSCI 184 Foundations of Computer Graphics 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 Techniques of modeling objects for the purpose of computer rendering: boundary representations, constructive solids geometry, hierarchical scene descriptions. Mathematical techniques for curve and surface representation. Basic elements of a computer graphics rendering pipeline; architecture of modern graphics display devices. Geometrical transformations such as rotation, scaling, translation, and their matrix representations. Homogeneous coordinates, projective and perspective transformations. Algorithms for clipping, hidden surface removal, rasterization, and anti-aliasing. Scan-line based and ray-based rendering algorithms. Lighting models for reflection, refraction, transparency. Foundations of Computer Graphics: Read More [+]

Prerequisites: COMPSCI 61B or COMPSCI 61BL ; programming skills in C, C++, or Java; linear algebra and calculus

Credit Restrictions: Students will receive no credit for Comp Sci 184 after taking Comp Sci 284A.

Instructors: O'Brien, Ng

Foundations of Computer Graphics: Read Less [-]

COMPSCI 185 Deep Reinforcement Learning, Decision Making, and Control 3 Units

Terms offered: Not yet offered This course will cover the intersection of control, reinforcement learning, and deep learning. This course will provide an advanced treatment of the reinforcement learning formalism, the most critical model-free reinforcement learning algorithms (policy gradients, value function and Q-function learning, and actor-critic), a discussion of model-based reinforcement learning algorithms, an overview of imitation learning, and a range of advanced topics, including exploration, model-based learning with video prediction, transfer learning, multi-task learning, and meta-learning. Homework assignments will cover imitation learning, policy gradients, Q-learning, and model-based reinforcement learning, as well as a final project. Deep Reinforcement Learning, Decision Making, and Control: Read More [+]

Prerequisites: CS189/289A or equivalent is a prerequisite for the course. This course will assume some familiarity with reinforcement learning, numerical optimization and machine learning, as well as a basic working knowledge of how to train deep neural networks (which is taught in CS182 and briefly covered in CS189)

Instructor: Levine

Deep Reinforcement Learning, Decision Making, and Control: Read Less [-]

COMPSCI 186 Introduction to Database Systems 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Access methods and file systems to facilitate data access. Hierarchical, network, relational, and object-oriented data models. Query languages for models. Embedding query languages in programming languages. Database services including protection, integrity control, and alternative views of data. High-level interfaces including application generators, browsers, and report writers. Introduction to transaction processing. Database system implementation to be done as term project. Introduction to Database Systems: Read More [+]

Prerequisites: COMPSCI 61C or COMPSCI 47C . COMPSCI 47C may be taken as a co-requisite for transfer students

Credit Restrictions: Students will receive no credit for COMPSCI 186 after completing COMPSCI W186 . A deficient grade in COMPSCI 186 may be removed by taking COMPSCI W186 .

Instructors: Cheung, Hellerstein

Introduction to Database Systems: Read Less [-]

COMPSCI W186 Introduction to Database Systems 4 Units

Terms offered: Fall 2021, Spring 2021, Spring 2020 Broad introduction to systems for storing, querying, updating and managing large databases. Computer science skills synthesizing viewpoints from low-level systems architecture to high-level modeling and declarative logic. System internals, including the complex details of query optimization and execution, concurrency control, indexing, and memory management. More abstract issues in query languages and data modeling – students are exposed to formal relational languages, SQL, full-text search, entity-relationship modeling, normalization, and physical database design. Recent technological trends in the field, including “Big Data” programming libraries like MapReduce, and distributed key-value stores with various consistency models. Introduction to Database Systems: Read More [+]

Credit Restrictions: Students will receive no credit for COMPSCI W186 after completing COMPSCI 186 . A deficient grade in COMPSCI W186 may be removed by taking COMPSCI 186 .

Summer: 8 weeks - 6 hours of web-based lecture and 2 hours of discussion per week

Additional Format: One hour of discussion and three hours of web-based lecture per week. Two hours of discussion and six hours of web-based lecture per week for 8 weeks.

Instructor: Hellerstein

COMPSCI C187 Data Engineering 4 Units

Terms offered: Not yet offered This course will cover the principles and practices of managing data at scale, with a focus on use cases in data analysis and machine learning. We will cover the entire life cycle of data management and science, ranging from data preparation to exploration, visualization and analysis, to machine learning and collaboration, with a focus on ensuring reliable, scalable operationalization. Data Engineering: Read More [+]

Prerequisites: COMPSCI 61B , or INFO 206B , or equivalent courses in programming with a C- or better, or Pass; and COMPSCI C100 / DATA C100 / STAT C100 , or COMPSCI 189 , or INFO 251 , or DATA 144 , or equivalent upper-division course in data science with a C- or better, or Pass

Instructors: Hellerstein, Jain, Parameswaran, Yan

Formerly known as: Data Science, Undergraduate 101

Also listed as: DATA C101

Data Engineering: Read Less [-]

COMPSCI 188 Introduction to Artificial Intelligence 4 Units

Terms offered: Fall 2024, Summer 2024 8 Week Session, Spring 2024 Ideas and techniques underlying the design of intelligent computer systems. Topics include search, game playing, knowledge representation, inference, planning, reasoning under uncertainty, machine learning, robotics, perception, and language understanding. Introduction to Artificial Intelligence: Read More [+]

Prerequisites: COMPSCI 61A , COMPSCI 61B , and COMPSCI 70

Instructors: Abbeel, Klein, Russell

Introduction to Artificial Intelligence: Read Less [-]

COMPSCI 189 Introduction to Machine Learning 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Theoretical foundations, algorithms, methodologies, and applications for machine learning. Topics may include supervised methods for regression and classication (linear models, trees, neural networks, ensemble methods, instance-based methods); generative and discriminative probabilistic models; Bayesian parametric learning; density estimation and clustering; Bayesian networks; time series models; dimensionality reduction; programming projects covering a variety of real-world applications. Introduction to Machine Learning: Read More [+]

Prerequisites: MATH 53 and MATH 54 ; and COMPSCI 70 or consent of instructor

Credit Restrictions: Students will receive no credit for Comp Sci 189 after taking Comp Sci 289A.

Instructors: Abbeel, Bartlett, Darrell, El Ghaoui, Jordan, Klein, Malik, Russell

Introduction to Machine Learning: Read Less [-]

COMPSCI C191 Introduction to Quantum Computing 4 Units

Terms offered: Spring 2024, Fall 2023, Spring 2023 This multidisciplinary course provides an introduction to fundamental conceptual aspects of quantum mechanics from a computational and informational theoretic perspective, as well as physical implementations and technological applications of quantum information science. Basic sections of quantum algorithms, complexity, and cryptography, will be touched upon, as well as pertinent physical realizations from nanoscale science and engineering. Introduction to Quantum Computing: Read More [+]

Prerequisites: Linear Algebra ( EECS 16A or PHYSICS 89 or MATH 54 ) AND either discrete mathematics ( COMPSCI 70 or MATH 55 ), or quantum mechanics ( PHYSICS 7C or PHYSICS 137A or CHEM 120A )

Also listed as: CHEM C191/PHYSICS C191

Introduction to Quantum Computing: Read Less [-]

COMPSCI 194 Special Topics 1 - 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Topics will vary semester to semester. See the Computer Science Division announcements. Special Topics: Read More [+]

Prerequisites: Consent of instructor

Fall and/or spring: 15 weeks - 1-4 hours of lecture per week

Summer: 8 weeks - 2-8 hours of lecture per week

Additional Format: One to four hours of lecture per week. Two to eight hours of lecture per week for 8 weeks.

Special Topics: Read Less [-]

COMPSCI 195 Social Implications of Computer Technology 1 Unit

Terms offered: Fall 2024, Fall 2023, Spring 2023 Topics include electronic community; the changing nature of work; technological risks; the information economy; intellectual property; privacy; artificial intelligence and the sense of self; pornography and censorship; professional ethics. Students will lead discussions on additional topics. Social Implications of Computer Technology: Read More [+]

Credit Restrictions: Students will receive no credit for 195 after taking C195/Interdisciplinary Field Study C155 or H195.

Fall and/or spring: 15 weeks - 1.5 hours of lecture per week

Additional Format: Three hours of lecture/discussion per week.

Grading/Final exam status: Offered for pass/not pass grade only. Final exam not required.

Instructor: Harvey

Social Implications of Computer Technology: Read Less [-]

COMPSCI H195 Honors Social Implications of Computer Technology 3 Units

Terms offered: Fall 2024, Fall 2023, Spring 2023 Topics include electronic community; the changing nature of work; technological risks; the information economy; intellectual property; privacy; artificial intelligence and the sense of self; pornography and censorship; professional ethics. Students may lead discussions on additional topics. Honors Social Implications of Computer Technology: Read More [+]

Credit Restrictions: Student will receive no credit for H195 after taking 195 or C195.

Fall and/or spring: 15 weeks - 1.5 hours of lecture and 1.5 hours of discussion per week

Additional Format: One and one-half hours of Lecture and One and one-half hours of Discussion per week for 15 weeks.

Honors Social Implications of Computer Technology: Read Less [-]

COMPSCI H196A Senior Honors Thesis Research 1 - 4 Units

Terms offered: Fall 2021, Fall 2020, Fall 2016 Thesis work under the supervision of a faculty member. To obtain credit the student must, at the end of two semesters, submit a satisfactory thesis to the Electrical Engineering and Computer Science department archive. A total of four units must be taken. The units many be distributed between one or two semesters in any way. H196A-H196B count as graded technical elective units, but may not be used to satisfy the requirement for 27 upper division technical units in the College of Letters and Science with a major in Computer Science. Senior Honors Thesis Research: Read More [+]

Prerequisites: Open only to students in the computer science honors program

Fall and/or spring: 15 weeks - 1-4 hours of independent study per week

Additional Format: Individual research.

Senior Honors Thesis Research: Read Less [-]

COMPSCI H196B Senior Honors Thesis Research 1 - 4 Units

Terms offered: Spring 2023, Spring 2010, Spring 2009 Thesis work under the supervision of a faculty member. To obtain credit the student must, at the end of two semesters, submit a satisfactory thesis to the Electrical Engineering and Computer Science department archive. A total of four units must be taken. The units many be distributed between one or two semesters in any way. H196A-H196B count as graded technical elective units, but may not be used to satisfy the requirement for 27 upper division technical units in the College of Letters and Science with a major in Computer Science. Senior Honors Thesis Research: Read More [+]

COMPSCI 197 Field Study 1 - 4 Units

Terms offered: Fall 2024, Fall 2023, Spring 2019 Students take part in organized individual field sponsored programs with off-campus companies or tutoring/mentoring relevant to specific aspects and applications of computer science on or off campus. Note Summer CPT or OPT students: written report required. Course does not count toward major requirements, but will be counted in the cumulative units toward graduation. Field Study: Read More [+]

Prerequisites: Consent of instructor (see department adviser)

Repeat rules: Course may be repeated for credit without restriction.

Fall and/or spring: 15 weeks - 1-4 hours of fieldwork per week

Summer: 6 weeks - 2.5-10 hours of fieldwork per week 8 weeks - 2-7.5 hours of fieldwork per week

Additional Format: One to Four hour of Fieldwork per week for 15 weeks. Two to Seven and one-half hours of Fieldwork per week for 8 weeks. Two and one-half to Ten hours of Fieldwork per week for 6 weeks.

Field Study: Read Less [-]

COMPSCI 198 Directed Group Studies for Advanced Undergraduates 1 - 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Group study of selected topics in Computer Sciences, usually relating to new developments. Directed Group Studies for Advanced Undergraduates: Read More [+]

Prerequisites: 2.0 GPA or better; 60 units completed

Fall and/or spring: 15 weeks - 1-4 hours of directed group study per week

Additional Format: Course format varies with section.

Directed Group Studies for Advanced Undergraduates: Read Less [-]

COMPSCI 199 Supervised Independent Study 1 - 4 Units

Terms offered: Fall 2021, Spring 2020, Fall 2018 Supervised independent study. Enrollment restrictions apply. Supervised Independent Study: Read More [+]

Prerequisites: Consent of instructor and major adviser

Credit Restrictions: Enrollment is restricted; see the Introduction to Courses and Curricula section of this catalog.

Fall and/or spring: 15 weeks - 0 hours of independent study per week

Summer: 6 weeks - 1-5 hours of independent study per week 8 weeks - 1-4 hours of independent study per week

Additional Format: Individual conferences.

Supervised Independent Study: Read Less [-]

EL ENG 24 Freshman Seminar 1 Unit

Terms offered: Fall 2022, Fall 2021, Fall 2017 The Freshman Seminar Program has been designed to provide new students with the opportunity to explore an intellectual topic with a faculty member in a small seminar setting. Freshman seminars are offered in all campus departments, and topics may vary from department to department and semester to semester. Freshman Seminar: Read More [+]

Fall and/or spring: 15 weeks - 1 hour of seminar per week

Additional Format: One hour of Seminar per week for 15 weeks.

Subject/Course Level: Electrical Engineering/Undergraduate

Freshman Seminar: Read Less [-]

EL ENG 25 What Electrical Engineers Do--Feedback from Recent Graduates 1 Unit

Terms offered: Fall 2011 A Berkeley Electrical Engineering and Computer Sciences degree opens the door to many opportunities, but what exactly are they? Graduation is only a few years away and it's not too early to find out. In this seminar students will hear from practicing engineers who recently graduated. What are they working on? Are they working in a team? What do they wish they had learned better? How did they find their jobs? What Electrical Engineers Do--Feedback from Recent Graduates: Read More [+]

Fall and/or spring: 15 weeks - 1 hour of lecture per week

Additional Format: One hour of Lecture per week for 15 weeks.

Instructor: Boser

What Electrical Engineers Do--Feedback from Recent Graduates: Read Less [-]

EL ENG 39 Freshman/Sophomore Seminar 2 - 4 Units

Terms offered: Spring 2023, Fall 2022, Spring 2022 Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25. Freshman/Sophomore Seminar: Read More [+]

Fall and/or spring: 15 weeks - 2-4 hours of seminar per week

Additional Format: Two to four hours of seminar per week.

EL ENG 42 Introduction to Digital Electronics 3 Units

Terms offered: Fall 2013, Summer 2013 8 Week Session, Spring 2013 This course serves as an introduction to the principles of electrical engineering, starting from the basic concepts of voltage and current and circuit elements of resistors, capacitors, and inductors. Circuit analysis is taught using Kirchhoff's voltage and current laws with Thevenin and Norton equivalents. Operational amplifiers with feedback are introduced as basic building blocks for amplication and filtering. Semiconductor devices including diodes and MOSFETS and their IV characteristics are covered. Applications of diodes for rectification, and design of MOSFETs in common source amplifiers are taught. Digital logic gates and design using CMOS as well as simple flip-flops are introduced. Speed and scaling issues for CMOS are considered. The course includes as motivating examples designs of high level applications including logic circuits, amplifiers, power supplies, and communication links. Introduction to Digital Electronics: Read More [+]

Prerequisites: Mathematics 1B

Credit Restrictions: Students will receive no credit for 42 after taking 40 or 100.

Additional Format: Three hours of Lecture and One hour of Discussion per week for 15 weeks. Six hours of Lecture and Two hours of Discussion per week for 8 weeks.

Introduction to Digital Electronics: Read Less [-]

EL ENG 49 Electronics for the Internet of Things 4 Units

Terms offered: Spring 2020, Spring 2019, Fall 2018 Electronics has become pervasive in our lives as a powerful technology with applications in a wide range of fields including healthcare, environmental monitoring, robotics, or entertainment. This course teaches how to build electronic circuits that interact with the environment through sensors and actuators and how to communicate wirelessly with the internet to cooperate with other devices and with humans. In the laboratory students design and build representative samples such as solar harvesters, robots, that exchange information with or are controlled from the cloud. Electronics for the Internet of Things: Read More [+]

Course Objectives: Electronics has become a powerful and ubiquitous technology supporting solutions to a wide range of applications in fields ranging from science, engineering, healthcare, environmental monitoring, transportation, to entertainment. The objective of this course is to teach students majoring in these and related subjects how to use electronic devices to solve problems in their areas of expertise. Through the lecture and laboratory, students gain insight into the possibilities and limitations of the technology and how to use electronics to help solve problems. Students learn to use electronics to interact with the environment through sound, light, temperature, motion using sensors and actuators, and how to use electronic computation to orchestrate the interactions and exchange information wirelessly over the internet.

Student Learning Outcomes: Deploy electronic sensors and interface them to microcontrollers through digital and analog channels as well as common protocols (I2C, SPI), Design, build and test electronic devices leveraging these concepts. Interact with the internet and cloud services using protocols such as http, MQTT, Blynk, Interface DC motors, steppers and servos to microcontrollers, Represent information with voltage, current, power, and energy and how to measure these quantities with laboratory equipment, To use and program low-cost and low-power microcontrollers for sensing, actuation, and information processing, and find and use program libraries supporting these tasks Understand and make basic low-pass and high-pass filters, Wheatstone bridge etc. Use electronics to sense and actuate physical parameters such as temperature, humidity, sound, light, and motion,

Prerequisites: ENGIN 7 , COMPSCI 10 , or equivalent background in computer programming (including COMPSCI 61A or COMPSCI C8 / INFO C8 / STAT C8 ); MATH 1A or equivalent background in Calculus

Additional Format: Three hours of lecture and three hours of laboratory and two hours of discussion per week.

Electronics for the Internet of Things: Read Less [-]

EL ENG 84 Sophomore Seminar 1 or 2 Units

Terms offered: Fall 2022, Spring 2022, Fall 2021 Sophomore seminars are small interactive courses offered by faculty members in departments all across the campus. Sophomore seminars offer opportunity for close, regular intellectual contact between faculty members and students in the crucial second year. The topics vary from department to department and semester to semester. Enrollment limited to 15 sophomores. Sophomore Seminar: Read More [+]

Summer: 6 weeks - 2.5-5 hours of seminar per week 8 weeks - 1.5-3.5 hours of seminar per week

Additional Format: unit(s):one hour of seminar per week; 2 unit(s):two hours of seminar per week. unit(s):one and one-half hours of seminar per week; 2 unit(s):three hours of seminar per week for 10 weeks. unit(s):one and one-half hours of seminar per week; 2 unit(s):three and one-half hours of seminar per week for 8 weeks. unit(s):two and one-half hours of seminar per week; 2 unit(s):five hours of seminar per week for 6 weeks. unit(s):three hours of seminar per week; 2 unit(s):six hours of seminar per week for five weeks.

EL ENG 97 Field Study 1 - 4 Units

Terms offered: Summer 2024 3 Week Session, Spring 2016, Fall 2015 Students take part in organized individual field sponsored programs with off-campus companies or tutoring/mentoring relevant to specific aspects and applications of computer science on or off campus. Note Summer CPT or OPT students: written report required. Course does not count toward major requirements, but will be counted in the cumulative units toward graduation. Field Study: Read More [+]

EL ENG 98 Directed Group Study for Undergraduates 1 - 4 Units

Terms offered: Fall 2021, Fall 2020, Fall 2016 Group study of selected topics in electrical engineering, usually relating to new developments. Directed Group Study for Undergraduates: Read More [+]

Additional Format: Course format varies.

Directed Group Study for Undergraduates: Read Less [-]

EL ENG 99 Individual Study and Research for Undergraduates 1 - 4 Units

Terms offered: Spring 2016, Fall 2015, Spring 2015 Supervised independent study and research for students with fewer than 60 units completed. Individual Study and Research for Undergraduates: Read More [+]

Prerequisites: Freshman or sophomore standing and consent of instructor. Minimum GPA of 3.4 required

Additional Format: One to four hours of independent study per week. One to four hours of independent study per week for 8 weeks. One to five hours of independent study per week for 6 weeks.

Individual Study and Research for Undergraduates: Read Less [-]

EL ENG 105 Microelectronic Devices and Circuits 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 This course covers the fundamental circuit and device concepts needed to understand analog integrated circuits. After an overview of the basic properties of semiconductors, the p-n junction and MOS capacitors are described and the MOSFET is modeled as a large-signal device. Two port small-signal amplifiers and their realization using single stage and multistage CMOS building blocks are discussed. Sinusoidal steady-state signals are introduced and the techniques of phasor analysis are developed, including impedance and the magnitude and phase response of linear circuits. The frequency responses of single and multi-stage amplifiers are analyzed. Differential amplifiers are introduced. Microelectronic Devices and Circuits: Read More [+]

Credit Restrictions: Students will receive no credit for EL ENG 105 after completing EL ENG 240A , or EL ENG 140 .

Additional Format: Three hours of Lecture, One hour of Discussion, and Three hours of Laboratory per week for 15 weeks.

Microelectronic Devices and Circuits: Read Less [-]

EL ENG C106A Introduction to Robotics 4 Units

Terms offered: Fall 2017, Fall 2016, Fall 2015 An introduction to the kinematics, dynamics, and control of robot manipulators, robotic vision, and sensing. The course covers forward and inverse kinematics of serial chain manipulators, the manipulator Jacobian, force relations, dynamics, and control. It presents elementary principles on proximity, tactile, and force sensing, vision sensors, camera calibration, stereo construction, and motion detection. The course concludes with current applications of robotics in active perception, medical robotics, and other areas. Introduction to Robotics: Read More [+]

Prerequisites: EL ENG 120 or consent of instructor

Instructor: Bajcsy

Formerly known as: Electrical Engineering C125/Bioengineering C125

Also listed as: BIO ENG C125

EL ENG C106B Robotic Manipulation and Interaction 4 Units

Terms offered: Spring 2017, Spring 2016 This course is a sequel to Electrical Engineering C106A/Bioengineering C125, which covers kinematics, dynamics and control of a single robot. This course will cover dynamics and control of groups of robotic manipulators coordinating with each other and interacting with the environment. Concepts will include an introduction to grasping and the constrained manipulation, contacts and force control for interaction with the environment. We will also cover active perception guided manipulation, as well as the manipulation of non-rigid objects. Throughout, we will emphasize design and human-robot interactions, and applications to applications in manufacturing, service robotics, tele-surgery, and locomotion. Robotic Manipulation and Interaction: Read More [+]

Prerequisites: EECS C106A / BIO ENG C125 or consent of the instructor

Additional Format: Three hours of lecture and three hours of laboratory and one hour of discussion per week.

Instructors: Bajcsy, Sastry

Also listed as: BIO ENG C125B

EL ENG 108 Introduction to Electric Power and Renewable Energy 4 Units

Terms offered: Spring 2024 This course is designed to provide an introduction to electric power conversion, distribution, and generation with renewable energy sources. The course will introduce fundamental concepts in the area of electric power, such as complex and reactive power, phasors, impedance, magnetic circuits and transformers, power factor, power quality, three-phase power, ac-dc conversion, and a conceptual overview of renewable energy and the integration of sustainable energy sources on the electric grid.Real world applications, ranging from ground-fault circuit interrupters to residential power distribution and solar photovoltaic dc-ac inverters will be explored in live lecture demonstration. Introduction to Electric Power and Renewable Energy: Read More [+]

Prerequisites: Differential equations and linear algebra (Math 54 or equivalent). Electricity and magnetism (Physics 7B or equivalent). Introduction to electric circuits (EE 16AB or equivalent). Students should enter the course with a basic working knowledge of RLC circuits

Instructor: Pilawa

Introduction to Electric Power and Renewable Energy: Read Less [-]

EL ENG 113 Power Electronics 4 Units

Terms offered: Fall 2024, Fall 2023, Fall 2022 Power conversion circuits and techniques. Characterization and design of magnetic devices including transformers, reactors, and electromagnetic machinery. Characteristics of bipolar and MOS power semiconductor devices. Applications to motor control, switching power supplies, lighting, power systems, and other areas as appropriate. Power Electronics: Read More [+]

Prerequisites: EL ENG 105 or background in circuit analysis (KVL, KCL, voltage/current relationships, etc.)

Instructors: Pilawa, Boles

Power Electronics: Read Less [-]

EL ENG 113B Power Electronics Design 4 Units

Terms offered: Spring 2024 This course is the second in a two-semester series to equip students with the skills needed to analyze, design, and prototype power electronic converters. While EE 113/213A provides an overview of power electronics fundamentals and applications, EE 113B/213B focuses on the practical design and hardware implementation of power converters. The primary focus of EE 113B/213B is time in the laboratory, with sequential modules on topics such as power electronic components, PCB layout, closed-loop control, and experimental validation. At the end of the course, students will have designed, prototyped, and validated a power converter from scratch, demonstrating a skill set that is critical for power electronics engineers in research and industry. Power Electronics Design: Read More [+]

Fall and/or spring: 15 weeks - 1.5 hours of lecture and 6 hours of laboratory per week

Additional Format: One and one-half hours of lecture and six hours of laboratory per week.

Instructor: Boles

Power Electronics Design: Read Less [-]

EL ENG 117 Electromagnetic Fields and Waves 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 Review of static electric and magnetic fields and applications; Maxwell's equations; transmission lines; propagation and reflection of plane waves; introduction to guided waves, microwave networks, and radiation and antennas. Minilabs on statics, transmission lines, and waves. Explanation of cellphone antennas, WiFi communication, and other wireless technologies. Electromagnetic Fields and Waves: Read More [+]

Prerequisites: EECS 16B , MATH 53 , and MATH 54 ; PHYSICS 7B or equivalent that covers AC circuits and electromagnetics up to Maxwell's equations

Additional Format: Three hours of lecture and one hour of discussion and two hours of laboratory per week.

Instructor: Yablonovitch

Electromagnetic Fields and Waves: Read Less [-]

EL ENG 118 Introduction to Optical Engineering 4 Units

Terms offered: Fall 2024, Fall 2023, Fall 2022 Fundamental principles of optical systems. Geometrical optics and aberration theory. Stops and apertures, prisms, and mirrors. Diffraction and interference. Optical materials and coatings. Radiometry and photometry. Basic optical devices and the human eye. The design of optical systems. Lasers, fiber optics, and holography. Introduction to Optical Engineering: Read More [+]

Prerequisites: MATH 53 ; EECS 16A and EECS 16B , or MATH 54

Credit Restrictions: Students will receive no credit for Electrical Engineering 118 after taking Electrical Engineering 218A. A deficient grade in Electrical Engineering 119 may be removed by taking Electrical Engineering 118.

Instructors: Waller, Kante

Introduction to Optical Engineering: Read Less [-]

EL ENG 120 Signals and Systems 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Continuous and discrete-time transform analysis techniques with illustrative applications. Linear and time-invariant systems, transfer functions. Fourier series, Fourier transform, Laplace and Z-transforms. Sampling and reconstruction. Solution of differential and difference equations using transforms. Frequency response, Bode plots, stability analysis. Illustrated by analysis of communication systems and feedback control systems. Signals and Systems: Read More [+]

Fall and/or spring: 15 weeks - 4 hours of lecture and 1 hour of recitation per week

Additional Format: Four hours of Lecture and One hour of Recitation per week for 15 weeks.

Signals and Systems: Read Less [-]

EL ENG 121 Introduction to Digital Communication Systems 4 Units

Terms offered: Spring 2016, Fall 2014, Fall 2013 Introduction to the basic principles of the design and analysis of modern digital communication systems. Topics include source coding, channel coding, baseband and passband modulation techniques, receiver design, and channel equalization. Applications to design of digital telephone modems, compact disks, and digital wireless communication systems. Concepts illustrated by a sequence of MATLAB exercises. Introduction to Digital Communication Systems: Read More [+]

Prerequisites: EECS 16A , EECS 16B , and COMPSCI 70

Introduction to Digital Communication Systems: Read Less [-]

EL ENG 122 Introduction to Communication Networks 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 This course focuses on the fundamentals of the wired and wireless communication networks. The course covers both the architectural principles for making these networks scalable and robust, as well as the key techniques essential for analyzing and designing them. The topics include graph theory, Markov chains, queuing, optimization techniques, the physical and link layers, switching, transport, cellular networks and Wi-Fi. Introduction to Communication Networks: Read More [+]

Introduction to Communication Networks: Read Less [-]

EL ENG 123 Digital Signal Processing 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 Discrete time signals and systems: Fourier and Z transforms, DFT, 2-dimensional versions. Digital signal processing topics: flow graphs, realizations, FFT, chirp-Z algorithms, Hilbert transform relations, quantization effects, linear prediction. Digital filter design methods: windowing, frequency sampling, S-to-Z methods, frequency-transformation methods, optimization methods, 2-dimensional filter design. Digital Signal Processing: Read More [+]

Prerequisites: EL ENG 120

Fall and/or spring: 15 weeks - 3 hours of lecture, 1 hour of discussion, and 1 hour of laboratory per week

Additional Format: Three hours of Lecture, One hour of Discussion, and One hour of Laboratory per week for 15 weeks.

Digital Signal Processing: Read Less [-]

EL ENG 126 Probability and Random Processes 4 Units

Terms offered: Spring 2017, Fall 2016, Spring 2016 This course covers the fundamentals of probability and random processes useful in fields such as networks, communication, signal processing, and control. Sample space, events, probability law. Conditional probability. Independence. Random variables. Distribution, density functions. Random vectors. Law of large numbers. Central limit theorem. Estimation and detection. Markov chains. Probability and Random Processes: Read More [+]

EL ENG C128 Feedback Control Systems 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 Analysis and synthesis of linear feedback control systems in transform and time domains. Control system design by root locus, frequency response, and state space methods. Applications to electro-mechanical and mechatronics systems. Feedback Control Systems: Read More [+]

Prerequisites: EECS 16A or MEC ENG 100 ; MEC ENG 132 or EL ENG 120

Also listed as: MEC ENG C134

Feedback Control Systems: Read Less [-]

EL ENG 130 Integrated-Circuit Devices 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Overview of electronic properties of semiconductor. Metal-semiconductor contacts, pn junctions, bipolar transistors, and MOS field-effect transistors. Properties that are significant to device operation for integrated circuits. Silicon device fabrication technology. Integrated-Circuit Devices: Read More [+]

Credit Restrictions: Students will receive no credit for El Eng 130 after taking El Eng 230A.

Integrated-Circuit Devices: Read Less [-]

EL ENG 134 Fundamentals of Photovoltaic Devices 4 Units

Terms offered: Spring 2024, Spring 2023, Spring 2022 This course is designed to give an introduction to, and overview of, the fundamentals of photovoltaic devices. Students will learn how solar cells work, understand the concepts and models of solar cell device physics, and formulate and solve relevant physical problems related to photovoltaic devices. Monocrystalline, thin film and third generation solar cells will be discussed and analyzed. Light management and economic considerations in a solar cell system will also be covered. Fundamentals of Photovoltaic Devices: Read More [+]

Prerequisites: EECS 16A and EECS 16B ; or Math 54 and Physics 7B; or equivalent

Instructor: Arias

Fundamentals of Photovoltaic Devices: Read Less [-]

EL ENG 137A Introduction to Electric Power Systems 4 Units

Terms offered: Fall 2024, Fall 2023, Fall 2022 Overview of conventional electric power conversion and delivery, emphasizing a systemic understanding of the electric grid with primary focus at the transmission level, aimed toward recognizing needs and opportunities for technological innovation. Topics include aspects of a.c. system design, electric generators, components of transmission and distribution systems, power flow analysis, system planning and operation, performance measures, and limitations of legacy technologies. Introduction to Electric Power Systems: Read More [+]

Prerequisites: Physics 7B; EECS 16A and EECS 16B , or consent of instructor

Instructor: von Meier

Introduction to Electric Power Systems: Read Less [-]

EL ENG 137B Introduction to Electric Power Systems 4 Units

Terms offered: Spring 2023, Spring 2022, Spring 2021 Overview of recent and potential future evolution of electric power systems with focus on new and emerging technologies for power conversion and delivery, primarily at the distribution level. Topics include power electronics applications, solar and wind generation, distribution system design and operation, electric energy storage, information management and communications, demand response, and microgrids. Introduction to Electric Power Systems: Read More [+]

Prerequisites: EL ENG 137A or consent of instructor

EL ENG 140 Linear Integrated Circuits 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Single and multiple stage transistor amplifiers. Operational amplifiers. Feedback amplifiers, 2-port formulation, source, load, and feedback network loading. Frequency response of cascaded amplifiers, gain-bandwidth exchange, compensation, dominant pole techniques, root locus. Supply and temperature independent biasing and references. Selected applications of analog circuits such as analog-to-digital converters, switched capacitor filters, and comparators. Hardware laboratory and design project. Linear Integrated Circuits: Read More [+]

Prerequisites: EL ENG 105

Credit Restrictions: Students will receive no credit for El Eng 140 after taking El Eng 240A.

Instructors: Alon, Sanders

Linear Integrated Circuits: Read Less [-]

EL ENG 142 Integrated Circuits for Communications 4 Units

Terms offered: Spring 2024, Fall 2023, Spring 2023 Analysis and design of electronic circuits for communication systems, with an emphasis on integrated circuits for wireless communication systems. Analysis of noise and distortion in amplifiers with application to radio receiver design. Power amplifier design with application to wireless radio transmitters. Radio-frequency mixers, oscillators, phase-locked loops, modulators, and demodulators. Integrated Circuits for Communications: Read More [+]

Prerequisites: EECS 16A , EECS 16B , and EL ENG 105

Credit Restrictions: Students will receive no credit for El Eng 142 after taking El Eng 242A.

Integrated Circuits for Communications: Read Less [-]

EL ENG 143 Microfabrication Technology 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Integrated circuit device fabrication and surface micromachining technology. Thermal oxidation, ion implantation, impurity diffusion, film deposition, expitaxy, lithography, etching, contacts and interconnections, and process integration issues. Device design and mask layout, relation between physical structure and electrical/mechanical performance. MOS transistors and poly-Si surface microstructures will be fabricated in the laboratory and evaluated. Microfabrication Technology: Read More [+]

Prerequisites: PHYSICS 7B

Additional Format: Three hours of Lecture and Three hours of Laboratory per week for 15 weeks.

Microfabrication Technology: Read Less [-]

EL ENG 144 Fundamental Algorithms for Systems Modeling, Analysis, and Optimization 4 Units

Terms offered: Fall 2015, Fall 2014, Fall 2013 The modeling, analysis, and optimization of complex systems requires a range of algorithms and design software. This course reviews the fundamental techniques underlying the design methodology for complex systems, using integrated circuit design as example. Topics include design flows, discrete and continuous models and algorithms, and strategies for implementing algorithms efficiently and correctly in software. Laboratory assignments and a class project will expose students to state-of-the-art tools. Fundamental Algorithms for Systems Modeling, Analysis, and Optimization: Read More [+]

Prerequisites: EECS 16A and COMPSCI 70 , or consent of instructor

Fall and/or spring: 15 weeks - 4 hours of lecture per week

Additional Format: Four hours of lecture per week.

Instructors: Keutzer, Lee, Roychowdhury, Seshia

Fundamental Algorithms for Systems Modeling, Analysis, and Optimization: Read Less [-]

EL ENG C145B Medical Imaging Signals and Systems 4 Units

Terms offered: Fall 2024, Fall 2023, Fall 2022 Biomedical imaging is a clinically important application of engineering, applied mathematics, physics, and medicine. In this course, we apply linear systems theory and basic physics to analyze X-ray imaging, computerized tomography, nuclear medicine, and MRI. We cover the basic physics and instrumentation that characterizes medical image as an ideal perfect-resolution image blurred by an impulse response. This material could prepare the student for a career in designing new medical imaging systems that reliably detect small tumors or infarcts. Medical Imaging Signals and Systems: Read More [+]

Prerequisites: Prerequisites are introductory level skills in Python/Matlab; and either EECS 16A , EECS 16B , and EL ENG 120 ; or MATH 54 , BIO ENG 105 , and BIO ENG 101

Instructor: Conolly

Also listed as: BIO ENG C165

Medical Imaging Signals and Systems: Read Less [-]

EL ENG C145L Introductory Electronic Transducers Laboratory 3 Units

Terms offered: Fall 2014, Fall 2013, Fall 2012 Laboratory exercises exploring a variety of electronic transducers for measuring physical quantities such as temperature, force, displacement, sound, light, ionic potential; the use of circuits for low-level differential amplification and analog signal processing; and the use of microcomputers for digital sampling and display. Lectures cover principles explored in the laboratory exercises; construction, response and signal to noise of electronic transducers and actuators; and design of circuits for sensing and controlling physical quantities. Introductory Electronic Transducers Laboratory: Read More [+]

Fall and/or spring: 15 weeks - 2 hours of lecture and 3 hours of laboratory per week

Additional Format: Two hours of Lecture and Three hours of Laboratory per week for 15 weeks.

Instructor: Derenzo

Also listed as: BIO ENG C145L

Introductory Electronic Transducers Laboratory: Read Less [-]

EL ENG C145M Introductory Microcomputer Interfacing Laboratory 3 Units

Terms offered: Spring 2013, Spring 2012, Spring 2011 Laboratory exercises constructing basic interfacing circuits and writing 20-100 line C programs for data acquisition, storage, analysis, display, and control. Use of the IBM PC with microprogrammable digital counter/timer, parallel I/O port. Circuit components include anti-aliasing filters, the S/H amplifier, A/D and D/A converters. Exercises include effects of aliasing in periodic sampling, fast Fourier transforms of basic waveforms, the use of the Hanning filter for leakage reduction, Fourier analysis of the human voice, digital filters, and control using Fourier deconvolution. Lectures cover principles explored in the lab exercises and design of microcomputer-based systems for data acquisitions, analysis and control. Introductory Microcomputer Interfacing Laboratory: Read More [+]

Prerequisites: EE 16A & 16B

Also listed as: BIO ENG C145M

Introductory Microcomputer Interfacing Laboratory: Read Less [-]

EL ENG C145O Laboratory in the Mechanics of Organisms 3 Units

Terms offered: Spring 2015, Spring 2014, Spring 2013, Spring 2012 Introduction to laboratory and field study of the biomechanics of animals and plants using fundamental biomechanical techniques and equipment. Course has a series of rotations involving students in experiments demonstrating how solid and fluid mechanics can be used to discover the way in which diverse organisms move and interact with their physical environment. The laboratories emphasize sampling methodology, experimental design , and statistical interpretation of results. Latter third of course devoted to independent research projects. Written reports and class presentation of project results are required. Laboratory in the Mechanics of Organisms: Read More [+]

Prerequisites: INTEGBI 135 or consent of instructor. For Electrical Engineering and Computer Sciences students: EL ENG 105 , EL ENG 120 or COMPSCI 184

Credit Restrictions: Students will receive no credit for C135L after taking 135L.

Fall and/or spring: 15 weeks - 6 hours of laboratory, 1 hour of discussion, and 1 hour of fieldwork per week

Additional Format: Six hours of laboratory and one hour of discussion per week, plus one field trip.

Formerly known as: Integrative Biology 135L

Also listed as: BIO ENG C136L/INTEGBI C135L

Laboratory in the Mechanics of Organisms: Read Less [-]

EL ENG 146L Application Specific Integrated Circuits Laboratory 2 Units

Terms offered: Spring 2015 This is a lab course that covers the design of modern Application-Specific Integrated Circuits (ASICs). The labs lay the foundation of modern digital design by first setting-up the scripting and hardware description language base for specification of digital systems and interactions with tool flows. Software testing of digital designs is covered leading into a set of labs that cover the design flow. Digital synthesis, floorplanning, placement and routing are covered , as well as tools to evaluate design timing and power. Chip-level assembly is covered, instantiation of custom IP blocks: I/O pads, memories, PLLs, etc. The labs culminate with a project design – implementation of a 3-stage RISC-V processor with register file and caches. Application Specific Integrated Circuits Laboratory: Read More [+]

Course Objectives: This course is a one-time offering to supplement the CS150 course offered in the Fall 2014, with a lab and project section that cover the Application-Specific Integrated Circuit Design. The CS150 lectures in the Fall 2014 already covered the necessary lecture material, so students who took the CS150 lab in the Fall of 2014 will have a chance to expand their skills into the area of Application-Specific Integrated Circuit design. Hence the pre-requisite for this course is that a student has taken the CS150 course in the Fall 2014.

Prerequisites: EECS 16B ; EL ENG 105 recommended

Credit Restrictions: Students will receive no credit for Electrical Engineering 146L after taking Fall 2014 version of Electrical Engineering 141/241A.

Fall and/or spring: 15 weeks - 3 hours of laboratory and 1 hour of discussion per week

Additional Format: Three hours of laboratory and one hour of discussion per week.

Instructor: Stojanovic

EL ENG 147 Introduction to Microelectromechanical Systems (MEMS) 3 Units

Terms offered: Fall 2024, Fall 2023, Fall 2022 This course will teach fundamentals of micromachining and microfabrication techniques, including planar thin-film process technologies, photolithographic techniques, deposition and etching techniques, and the other technologies that are central to MEMS fabrication. It will pay special attention to teaching of fundamentals necessary for the design and analysis of devices and systems in mechanical, electrical, fluidic, and thermal energy/signal domains , and will teach basic techniques for multi-domain analysis. Fundamentals of sensing and transduction mechanisms including capacitive and piezoresistive techniques, and design and analysis of micmicromachined miniature sensors and actuators using these techniques will be covered. Introduction to Microelectromechanical Systems (MEMS): Read More [+]

Credit Restrictions: Students will receive no credit for El Eng 147 after taking El Eng 247A.

Instructors: Maharbiz, Nguyen, Pister

Introduction to Microelectromechanical Systems (MEMS): Read Less [-]

EL ENG 192 Mechatronic Design Laboratory 4 Units

Terms offered: Spring 2021, Spring 2020, Spring 2019 Design project course, focusing on application of theoretical principles in electrical engineering to control of a small-scale system, such as a mobile robot. Small teams of students will design and construct a mechatronic system incorporating sensors, actuators, and intelligence. Mechatronic Design Laboratory: Read More [+]

Prerequisites: EECS 16A , EECS 16B , COMPSCI 61A , COMPSCI 61B , COMPSCI 61C , and EL ENG 120

Fall and/or spring: 15 weeks - 1.5 hours of lecture and 10 hours of laboratory per week

Additional Format: One and one-half hours of Lecture and Ten hours of Laboratory per week for 15 weeks.

Instructor: Fearing

Mechatronic Design Laboratory: Read Less [-]

EL ENG 194 Special Topics 1 - 4 Units

Terms offered: Fall 2024, Spring 2024, Fall 2023 Topics will vary semester to semester. See the Electrical Engineering announcements. Special Topics: Read More [+]

Additional Format: One to four hours of lecture per week.

EL ENG H196A Senior Honors Thesis Research 1 - 4 Units

Terms offered: Spring 2016, Fall 2015, Spring 2015 Thesis work under the supervision of a faculty member. A minimum of four units must be taken; the units may be distributed between one and two semesters in any way. To obtain credit a satisfactory thesis must be submitted at the end of the two semesters to the Electrical and Engineering and Computer Science Department archive. Students who complete four units and a thesis in one semester receive a letter grade at the end of H196A. Students who do not, receive an IP in H196A and must enroll in H196B. Senior Honors Thesis Research: Read More [+]

Prerequisites: Open only to students in the Electrical Engineering and Computer Science honors program

Grading/Final exam status: Letter grade. This is part one of a year long series course. A provisional grade of IP (in progress) will be applied and later replaced with the final grade after completing part two of the series. Final exam required.

EL ENG H196B Senior Honors Thesis Research 1 - 4 Units

Terms offered: Spring 2016, Spring 2015, Spring 2014 Thesis work under the supervision of a faculty member. A minimum of four units must be taken; the units may be distributed between one and two semesters in any way. To obtain credit a satisfactory thesis must be submitted at the end of the two semesters to the Electrical and Engineering and Computer Science Department archive. Students who complete four units and a thesis in one semester receive a letter grade at the end of H196A. Students who do not, receive an IP in H196A and must enroll in H196B. Senior Honors Thesis Research: Read More [+]

Grading/Final exam status: Letter grade. This is part two of a year long series course. Upon completion, the final grade will be applied to both parts of the series. Final exam required.

EL ENG 197 Field Study 1 - 4 Units

Terms offered: Fall 2023, Fall 2022, Fall 2021 Students take part in organized individual field sponsored programs with off-campus companies or tutoring/mentoring relevant to specific aspects and applications of computer science on or off campus. Note Summer CPT or OPT students: written report required. Course does not count toward major requirements, but will be counted in the cumulative units toward graduation. Field Study: Read More [+]

EL ENG 198 Directed Group Study for Advanced Undergraduates 1 - 4 Units

Terms offered: Spring 2024, Fall 2023, Spring 2023 Group study of selected topics in electrical engineering, usually relating to new developments. Directed Group Study for Advanced Undergraduates: Read More [+]

Additional Format: To vary with section.

Directed Group Study for Advanced Undergraduates: Read Less [-]

EL ENG 199 Supervised Independent Study 1 - 4 Units

Terms offered: Summer 2024 10 Week Session, Spring 2023, Fall 2018 Supervised independent study. Enrollment restrictions apply. Supervised Independent Study: Read More [+]

Contact Information

Department of electrical engineering and computer science.

253 Cory Hall

Phone: 510-664-4436

College of Computing, Data Science and Society

https://cdss.berkeley.edu/

College of Engineering

Phone: 510-642-3214

Fax: 510-643-7846

http://www.eecs.berkeley.edu/

Department Chair

Claire Tomlin, PhD

721 Sutardja Dai Hall

Phone: 510-643-6610

[email protected]

EECS Associate Chair

574 Cory Hall

Phone: 510-642-6251

[email protected]

Executive Director, Center for Student Affairs

Susanne Kauer

221 Cory Hall

Phone: 510-642-3694

[email protected]

Director of Undergraduate Affairs and Advising

Antoine Davis

377 Soda Hall

Phone: 510-642-7214

[email protected]

Director of Student Diversity

Audrey Sillers

Phone: 510-664-7181

[email protected]

CS Scholars Director

Charlene Duncan

349 Soda Hall

Phone: 510-642-2357

[email protected]

Assistant Director of Undergraduate Affairs and Advising

Cs scheduler.

Cindy Conners

Phone: 510-643-6002

[email protected]

Computer Science Advisor

Carol Marshall

Phone: 510-664-4600

Javier Garcia

Phone: 510-664-5230

Print Options

When you print this page, you are actually printing everything within the tabs on the page you are on: this may include all the Related Courses and Faculty, in addition to the Requirements or Overview. If you just want to print information on specific tabs, you're better off downloading a PDF of the page, opening it, and then selecting the pages you really want to print.

The PDF will include all information unique to this page.

  • Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

A Complete Guide to Computer Science Courses

Jennifer considers herself a lifelong learner with a growth mindset and an innate curiosity.

Computer science involves the design, development, and maintenance of software and hardware systems. Computer science also encompasses the study of algorithms, data structures, and programming languages.

In addition to covering all of the topics above, computer science courses also often include a project component, which gives students the opportunity to apply what they have learned to a real-world problem.

Computer science courses are an excellent way for students to develop the skills that are necessary for a career in computer science as a computer scientist , software developer , or computer programmer .

Computer Science Course Examples

There are many reasons why someone would want to get certified in their field. For some, it is required by their employer. For others, it is a way to show their dedication to their chosen profession.

And still, others see it as a way to improve their marketability and earn a higher salary. But not everyone can afford to pay for a certification course or coding bootcamp . Fortunately, there are many free and low-cost courses available that can provide the same benefits.

Some of the reputable online resources that offer computer science courses include Coursera, Udacity, and edX. edX offers self-paced computer science courses that cover topics like object-oriented programming and penetration testing .

Udacity has a popular introductory course on Python . If you’re looking for something a little more in-depth, IBM offers a full-stack developer course on Coursera.

The courses are self-paced, and there is typically a certification fee upon completion. These courses can help you learn the basics of computer science and get started in your career.

Computer Science Courses on Udacity

Free intro to python.

  • Duration: 5 weeks
  • Level: Beginner
  • Offered by: Kaggle
  • Format: Online
  • Who should get this certification: This course is for learners who would like to learn the basics of the Python programming language, as well as programming best practices.
  • Course description: Students will learn how to create, store, and process data by encoding Python data types and variables, and using conditionals and loops to control the flow of their programs. Students use data structures like lists, sets, dictionaries, and tuples to store collections of related data. They define and document their own functions, write scripts, and resolve program errors.

Introduction to Programming

  • Duration : 4 months
  • Cost : $100/month or $359 for 4 months
  • Level : Beginner
  • Offered by : Udacity (Nanodegree Program)
  • Format : Online
  • Who should get this certification : Students should have previous online experience, be able to do a Google search, and most importantly have the desire to press forward!
  • Course description : Through HTML, CSS, Python, and JavaScript, students first learn coding basics that will help them think and problem-solve as programmers. They will then engage in complex assignments, exercises, and projects that enhance their proficiency in coding and hone their problem-solving skills.

Computer Science Courses on Coursera

Ibm full stack software developer professional certificate.

  • Duration : 14 months (at 3 hours per week)
  • Cost : Coursera subscription of $39/month.
  • Offered by : IBM
  • Who should get this certification : This course is for students who want to master Cloud Native and Full Stack Development through hands-on projects. No prior experience required.
  • Course description : Students will learn the coding techniques and tools that software developers use to build, deploy, test, run, and manage cloud-based applications. They will learn HTML, JavaScript, Node.js, Python, Django, Containers, and micro-services.

Python for Everybody Specialization

  • Duration: 8 months (at 3 hours per week)
  • Cost: Coursera subscription of $39/month.
  • Level: Intermediate
  • Offered by: University of Michigan
  • Who should get this certification: This Specialization builds on the success of the Python for Everybody course. Students should have completed the Python for Everybody course prior to registering for this intermediate-level course.
  • Course description: This course will introduce the basics of programming, including data structures, networked application program interfaces, and databases, using the Python programming language. In the capstone project, students will use the technologies learned throughout the specialization to build their own applications for data retrieval, processing, and visualization.

Computer Science Courses on edX

Introduction to object-oriented programming with java iii.

  • Duration : 6 weeks
  • Cost : Free with optional upgrade
  • Level : Intermediate
  • Offered by : GTx
  • Who should get this certification : This course is for students who want to learn how to create and use exceptions, data types, recursion, and graphical user interfaces (GUIs).
  • Course description : This classroom teaches students how to determine and then create exceptions to handle programming errors. They will also be trained in the use of data structures and recursion. Students will additionally learn about basic graphical user interfaces (GUIs) using JavaFX.

Penetration Testing – Discovering Vulnerabilities

  • Cost: Free with optional upgrade
  • Offered by: NYU
  • Who should get this certification: This is the seventh course in the intermediate, undergraduate-level Cybersecurity Fundamentals MicroBachelors program that makes up the larger series. Students should have completed the previous six courses before attempting this one, unless they have a background in these areas already and feel comfortable skipping ahead.
  • Course description: This is a self-paced class that helps improve a hacker’s ethical hacking skills. The curriculum covers penetration testing subjects starting with an introduction to Penetration Testing Methodologies, Recognizance, Enumeration for Penetration Testers, Scanning, and Vulnerability Enumeration.

Advantages of Computer Science Courses

In the world we live in today, technology is constantly evolving and changing. Computer science is the study of how computers work and how they can be used to solve problems.

It is a rapidly growing field that offers many opportunities for those who are interested in it.

There are many reasons why someone might want to study computer science. For one, it is a rapidly growing field with many job opportunities. Computer science graduates are in high demand, and the salaries for computer science jobs are usually very good.

Additionally, studying computer science can give you a better understanding of how computers work and how to use them effectively.

If you’re considering studying computer science, there are many things to consider. However, overall, it is a field with great potential for those who are interested in it.

With the right skills and knowledge, you can have a successful career in computer science.

Best Computer Science Courses

With so many computer science courses available, it can be tough to decide which ones to take. This article will list the best types of computer science courses to help you make the most of your education.

  • Many introductory computer science courses teach the basics of programming. This is a vital skill for students to learn in order to be successful in the field of computer science. Programming is a way of giving computers instructions to perform specific tasks. In order to program, students must first understand how to code. Coding is the process of creating a set of instructions for a computer to follow. These instructions are written in a special language that the computer can understand. Once students have learned how to code, they can begin writing programs that can perform various tasks.
  • There are different programming languages students can learn in computer science courses. These languages can be used to create different types of software, applications, and websites. The most popular programming languages are Java, Python, and C++. Each language has its own unique features and syntax.
  • Computer science courses usually teach the basics of each language before moving on to more advanced topics. Students learn how to write code, debug programs, and test software applications. By the end of a computer science course, students should be able to write small programs in any programming language.
  • Some computer science courses teach algorithms that solve problems using computers, which is essential for many jobs in the modern world. In addition to teaching how to design and implement algorithms, computer science courses also cover the mathematical foundations of computing. This mathematical foundation is important for students who want to pursue a career in computer science, as it provides them with the ability to analyze and understand algorithms.
  • Data structures are the foundation for algorithms and software design, so it is important for students to learn them. Computer science courses teach data structures because they are essential for students to understand how to store and organize data. By learning about different data structures, students can choose the best one for their needs.
  • Computer science courses teach students about databases, including how to store and retrieve data. In particular, students learn how to design, implement, and maintain database systems. These courses also cover topics such as data security, privacy, and legal issues.
  • Computer science courses that focus on operating systems teach students about the different types of operating systems, how they work, and how to troubleshoot them. In addition, they learn about security issues related to operating systems.
  • Computer science courses that focus on networking teach students about the different types of networks, how they work, and how to troubleshoot them. Students also learn about network architectures, protocols, and components. In addition, they learn about security issues related to networks.
  • Information management is the process of organizing, storing, and retrieving information. Computer science courses provide students with the skills they need to manage information. This is a critical skill for anyone who wants to work in the computer field.
  • Most computer science courses cover topics like database design, data mining, and information security. This gives students the knowledge they need to create and maintain databases. They also learn how to retrieve information from databases and how to protect it from unauthorized access.
  • Information management is a growing field, and computer science graduates are in high demand. Companies are looking for employees who can manage their data effectively. With the right skills, you can start your career in this exciting field!
  • In recent years, the job market has increasingly demanded employees with computer science skills. As a result, many students are now enrolling in computer science courses to learn software engineering. These courses teach students how to design, develop, test and deploy software applications.

Through these courses, students gain an understanding of fundamental computer science concepts. They also learn how to apply these concepts to real-world scenarios. Graduates of computer science courses are highly sought-after by employers.

So if you’re looking to boost your employability, consider enrolling in a computer science course. You’ll gain invaluable skills that will help you excel in your career.

Frequently Asked Questions

Computer science courses are ideal for individuals interested in technology, problem-solving, and software development. They are suitable for those looking to pursue careers in IT, software engineering, data analysis, and more.

These courses cover a wide range of topics, including programming languages, software development, algorithms, data structures, database management, artificial intelligence, and network security.

The duration varies depending on the course’s depth and complexity. Introductory courses might last a few weeks, while degree programs can take several years to complete.

Prerequisites vary by course level. Beginner courses might require basic math skills, while advanced courses may need prior knowledge in programming or related fields.

Graduates can pursue various roles, such as software developers , systems analysts, data scientists , and network architects, among others, in diverse industries like technology, finance, healthcare, and government.

Related Resources

  • Find a Degree, Certification, Bootcamp, or Career in Computer Science
  • Resource Guides for Computer Science
  • How to Become a Computer Scientist
  • How to Get into Computer Science
  • Computer Science Degree Options

AQA Computer Science NEA Example Projects

Avatar for triton62674

Quick Reply

Related discussions.

  • A level computer science nea
  • AQA Computer Science NEA and Computer science paper 1 question
  • Computer Science NEA Examples? (AQA)
  • Computer Science NEA
  • NEA as a private candidate?
  • OCR computer science coursework
  • Computer science nea
  • AQA Computer Science NEA
  • A-Level Computer Science NEA languages help
  • Computer science Nea H446
  • Computer Science AQA NEA help
  • A Level Computer Science Retake
  • A-Level Computer Science NEA Stakeholders
  • Computer Science UCAS Personal Statement
  • Computer Science project for university application
  • AQA A-Level Computer Science NEA grade boundaries
  • AQA Computer science NEA help needed ASAP

Last reply 2 weeks ago

Last reply 3 weeks ago

Last reply 4 weeks ago

Last reply 1 month ago

Last reply 2 months ago

Articles for you

How to revise for GCSE Computer Science exams: AQA explains what to do

How to revise for GCSE Computer Science exams: AQA explains what to do

Students react after GCSE Computer Science Paper 1 on 15 May 2024

Students react after GCSE Computer Science Paper 1 on 15 May 2024

Students react after GCSE Computer Science Paper 2 on 21 May 2024

Students react after GCSE Computer Science Paper 2 on 21 May 2024

These YouTubers can help get your exam revision on track

These YouTubers can help get your exam revision on track

Students working together

  • M.S. in Computer Science

The M.S. in Computer Science offers students with a bachelor's degree the opportunity to improve their training with advanced study in computer science. 

We cater to students with basic analytic skills and a strong aptitude for mathematics, programming, and logical reasoning.  You don’t need a bachelor’s degree in computer science specifically for the program, but a technical undergraduate background will set you up for success.

Our program isn’t based on a fixed set of courses. Instead, you’ll construct your own course of study, in consultation with your advisor. The program requires only coursework; research is optional, though approximately a third of our students have some research involvement during the course of their studies, and there is a thesis option.

How long does the program take to complete?

Most students will complete the program in three semesters, but if you’re switching to computer science from another field, you may need an additional semester to fill gaps in your undergraduate training. The M.S. program is distinct from the Ph.D. program in computer science, and master's students will not usually continue into the Ph.D. program and will not receive preferential treatment if they apply.

Program Requirements

You must complete six broad requirements:

Pass* 96-108 units in qualifying master’s courses from the curriculum list in the MSCS Handbook . This is typically eight courses.

Pass up to 12 MSCS elective units.

Pass one course from the available Systems courses. (counts toward Qualifying unit)

Pass one course from the available Theoretical Foundations courses. (counts toward Qualifying unit)

Pass one course from the available Artificial Intelligence courses. (counts toward Qualifying unit)

Maintain a 3.0 QPA.

(* "Passing” is considered receiving a letter grade of C or higher.)

Some students may need to take additional courses that do not satisfy any program requirement, in order to satisfy pre-requisites for other courses. For example, most students will be expected to take 15-213/513 (Introduction to Computer Systems).

15-213/513 can be taken over the Internet during the summer, and new master’s students are encouraged to do so before they arrive. Students who completed their undergraduate work at CMU can apply up to two courses taken as an undergraduate toward requirements for the M.S., provided the two courses were not previously used to satisfy any requirement.

You can see a detailed description of the program's requirements and curriculum in our  MSCS Handbook .

How to Apply

For questions specific to the Master of Science in Computer Science (MSCS) please email: [email protected]

  • Current Semester Courses
  • Upcoming Semester Courses
  • Schedule of Classes
  • Undergraduate Catalog
  • Bachelor's Programs
  • Fifth Year Master's
  • Accelerated MBA Program
  • Master's - How to Apply
  • Master's Programs Contacts
  • Other SCS Master's Programs
  • Doctoral Programs
  • Student Resources

IMAGES

  1. A-level Computer Science

    computer science coursework example

  2. WJEC A Level Computer Science

    computer science coursework example

  3. All Essential Information About Computer Science Coursework

    computer science coursework example

  4. University of Texas at Austin

    computer science coursework example

  5. Computer Science Coursework NEA Testing Evidence

    computer science coursework example

  6. New GCSE Computer Science OCR Revision Guide

    computer science coursework example

COMMENTS

  1. PDF Exemplar Candidate Work

    Introduction. This exemplar material serves as a general guide. It provides the following benefits to a teacher: Gives teachers an appreciation of the variety of work that can be produced for this unit. Shows how the mark scheme has been applied by a senior assessor. Provides examples of both good and weak application of different parts of the ...

  2. 10 Best Computer Science Courses to Take in 2022

    Are you looking for the best introductions to computer science? I've ranked the top courses available online, following a robust methodology. And they're all free to audit. You can read about it below. But if you're in a hurry, here are my top picks. Click on one to skip to

  3. Computer science theory

    Learn select topics from computer science - algorithms (how we solve common problems in computer science and measure the efficiency of our solutions), cryptography (how we protect secret information), and information theory (how we encode and compress information).

  4. Computer Science Coursework Examples ☑️ College & School Samples

    Get access to our online database of Computer Science Coursework writing samples. All the documents are authentic, quality, and plagiarism-free. ⭐️ Find the Best Examples

  5. CS50: Introduction to Computer Science

    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.

  6. Computer Science Courses & Tutorials

    Get started in Computer Science (CS) with Codecademy's courses & tutorials. Excel in algorithms, data structures, and programming languages.

  7. 75+ A-Level Computer Science NEA Ideas (and why they're good)

    Coming up with a good A-Level Computer Science NEA project idea can be hard... Check out all these project ideas that'll kick start your brain into action!

  8. CS50's Introduction to Computer Science

    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.

  9. A-level Computer Science

    This document is an example of a coursework (Programming Project) done for A level Computer Science with OCR. It follows the 2015 specification.

  10. Computer Science Sample Course Sequence

    SBC refers to the following (five) categories: HUM, SBS, ARTS, USA, GLO Students may satisfy the Pursue Deeper Understanding and Prepare for Life-Long Learning categories of the SBC by completing CSE 300 and one of the following course clusters: CSE 305, 308 CSE 306, 308

  11. Sample schedules and plans of study

    Sample schedules and plans of study. Here are some suggested paths for the the Computer Science concentration based on the new (Fall 2021) concentration requirements. These are just examples: there are many possible pathways through the degree. Interested students should consult with the Director of Undergraduate Studies for guidance.

  12. Computer Science

    Berkeley emphasizes the science of computer science, which means much more than just computer programming. It includes the theory of computation, the design and analysis of algorithms, the architecture and logic design of computers, programming languages, compilers, operating systems, scientific computation, computer graphics, databases ...

  13. A List of Popular Computer Science Courses

    Looking to learn the basics of computer science? Check out this list of available computer science courses.

  14. AQA Computer Science NEA Example Projects

    4. Hello, could anyone share Y13 Computer Science projects from last year as an example for what I should/should not do. I am asking because my teacher doesnt have any examples due to the fact that this NEA is brand new and was first examined last year I think. It would be appreciated if you shared pre 2016 example projects, too!

  15. M.S. in Computer Science

    M.S. in Computer Science. We cater to students with basic analytic skills and a strong aptitude for mathematics, programming, and logical reasoning. You don't need a bachelor's degree in computer science specifically for the program, but a technical undergraduate background will set you up for success.

  16. PDF Computer Science Major

    S C S SCSatCMU B.S. IN COMPUTER SCIENCE Note: For Students with AP Computer Science or College Credit in Introductory Programming and AP Calculus, AB or college credit for Calculus I.