Bradfield School of Computer Science

An intensive, in-person school in San Francisco for professional software engineers seeking mastery.

Are you a strong programmer striving to be a high-impact technologist?

Then Bradfield may be for you.

Instead of teaching you frameworks or technologies you could easily teach yourself, we focus on deep topics in computer science and software engineering rarely taught outside of top universities.

Our courses are structured as short modules that can be taken individually to accelerate an area of study, or combined for a more comprehensive computer science curriculum. Small in-person tutorials are combined with programming exercises, textbook study and paper reading to maximize effectiveness, and all instructors are highly experienced teachers and engineers.

For updates on new courses, as well as the best computer science resources and tech news that matters, subscribe to our weekly newsletter Bradfield Beeps.

Core Computer Science

Computer Architecture
and the Hardware/Software Interface

Next session: 7 May - 14 Jun 2019

Understand how a microprocessor works from logic gates up, and the interaction between hardware, user code and the operating system kernel.

Problem Solving with Algorithms and Data Structures

Next session: 1-25 May 2019

Learn about common algorithms, data structures, and techniques for algorithmic problem solving. This course is an accelerated view of what is commonly covered in an undergraduate algorithms course.

Computer Networking

Next session: 6 May - 13 Jun 2019

Understand the protocols and technology enabling the Internet. Covers all layers of the OSI model, with a particular focus on understanding IP, TCP, UDP and common application layer protocols.

Mathematics for Computing

Next session: 5-29 Aug 2019

Learn the math that’s useful in software engineering, including combinatorics and probability theory, set theory, graphs, number theory for cryptography and basic linear algebra.


Next session: 7 May - 14 Jun 2019

Learn about modern and historical innovations in data representation, and understand the architectures of both traditional relational DBMSs and modern distributed data stores.

Languages, Compilers
and Interpreters

Next session: 18 Jun - 26 Jul 2019

Learn about languages generally, rather than one at a time. Covers compiler and interpreter architectures, and the key similarities between various languages and their implementations.

Operating Systems

Next session: 17 Jun - 25 Jul 2019

Learn about the fundamental problems solved by modern operating systems, and the decisions faced by operating system designers.

Distributed Systems

Next session: 29 Jul - 5 Sep 2019

Understand common patterns in distributed systems design, and the tradeoffs we are forced to make between consistency and availability in the context of distributed data and computation.

Specialties and Applications

Deep Learning for Engineers

Next session: 9 Sep - 3 Oct 2019

Understand the fundamentals of machine learning and modern deep learning techniques from an engineer’s perspective.


Next session: August 2019

Learn the theory and mechanics behind cryptocurrencies, from the core data structures of blockchains through to practical aspects of smart contract development.

Engineering Leadership

Next session: 9 Jul - 2 Aug 2019

Learn the foundational ideas and technical elements of effective engineering leadership, from communication and team building through to process and organization design.

Program Interfaces, Patterns and Anti-patterns

Next session: 6 May - 13 Jun 2019

Learn what good API design looks like across a variety of program boundaries, through case studies and exercises.

Ozan Onay portrait

Ozan Onay is the lead instructor at Bradfield, and most frequently teaches Algorithms and Data Structures, Computer Architecture, Databases, Operating Systems and Distributed Systems. Prior to co-founding Bradfield, he worked for a decade as a software engineer and engineering manager, including as CTO and Co-founder of Topguest (acquired by Switchfly) and

Elliott Jin portrait

Elliott was most recently an engineer on the search team at Dropbox, where he worked on a distributed text retrieval system. Previously he worked at Palantir and Apptimize. In addition, Elliott has been a mentor for the Google Summer of Code, a section leader in Stanford’s intro CS course, and a tutor at Stanford’s Center for Teaching and Learning.

Thomas Ballinger portrait

Tom is a software engineer at Dropbox, prior to which he was the first facilitator at Recurse Center, a programming workshop for experienced programmers. For four years he helped participants learn new programming languages, build fancy terminal UIs and discover concurrent network programming, which resulted in a lot of BitTorrent clients being built.

Tom portrait

Tom Alcorn graduated from MIT with a degree in mathematics and now works as a software engineer at Join, developing a next generation query language for building data. Previously he worked at and Everquote. He teaches the Mathematics for Computing course at Bradfield and has particular interests in machine learning and motorcycles.

Xavier portrait

Xavier Shay was most recently Director of Payment Engineering and Analytics at Square, where he coached managers and senior leaders across the company. He has previously run hundreds of professional trainings and published numerous educational screencasts, and teaches the Engineering Leadership course at Bradfield.

Haseeb portrait

Haseeb is a general partner at MetaStable Capital, a leading cryptocurrency hedge fund. Previously he was an engineer at, and before that battled payments fraud at Airbnb. He is a top cryptocurrencies writer on Medium and is collaborating with researchers at Cornell on blockchain frontrunning attacks.

Brian Spiering portrait

Dr. Brian Spiering is a Professor of Computer Science at University of San Francisco, with a focus on natural language processing and artificial intelligence. At Bradfield, he teaches the Deep Learning for Engineers course. He is also active in the San Francisco tech community as a volunteer and mentor at DataKind SF Bay and Delta Analytics.


You Are Not Google

How to avoid the hype and make good technology choices.

Learn every language

Why you should understand languages and compilers generally, rather the details of any one.

The cost of forsaking C

What we lose as we spend more time with high-level languages, and why we shouldn’t neglect C.

Cutting through to what matters

What is worth learning and spending time on, in our opinion.

Learn how computers work

Practical suggestions for learning about computer architecture.

How to learn about database systems

Practical suggestions for how to really understand and make good use of database systems.

Our microsite listing the best resources and focus areas for those wishing to teach themselves computer science.

Both Myles and Oz are incredible engineers and teachers, and were the two people who have had the greatest impact on my career as an engineer. Working with them, I experienced the highest growth period of my career.
Omar Rayward portrait
Omar Rayward, CTO at Tidewater
Myles and Oz taught me to be tenacious about figuring out what’s going on under the hood, rather than blindly trusting the abstractions I’m working with. I will look back upon my training with Bradfield as a significant inflection point in my development as an engineer and as a thinker.
Ammar portrait
Ammar Mian, Software engineer at Morning Consult
If you care about software craftsmanship then you need to master computer science, full stop. I’m embarrassed to say that I once scoffed at the idea of studying the fundamentals before learning the latest trends—I blame my bootcamp roots—because now that I’ve started, I’ve become a vastly better engineer.
Jason Benn portrait
Jason Benn, Software Engineer at Minerva
Take a Bradfield course if you want to accelerate your software engineering career. The classes are small, the material is relevant, and the pace is fast but manageable. I was promoted to Lead iOS Engineer after taking one course!
Jacqueline Sloves portrait
Jacqueline Sloves, Lead iOS Engineer at Vida Health
Myles helped me not just with the things I didn’t know, but more importantly with the things I didn’t know I didn’t know. He was instrumental to me building up my programming interview skillsets. Through working with Myles, I have already landed one offer that was $42k higher than my previous salary.
Sid Zhang portrait
Sid Zhang, Software Engineer at Uber
Myles and Oz are extraordinary teachers. They have a rare combination of deep theoretical knowledge, practical experience, and a knack for distilling complex topics into simple ideas. Under their tutelage I’ve become a higher-leverage engineer, a more capable problem-solver, and most importantly, a more confident, dedicated learner.
Grant Wu portrait
Grant Wu, Software Engineer at Clover Health

The Bradfield program’s closely-mentored instruction is exactly the sort of prep we think sets candidates up for success.
Ben Kamens portrait
Ben Kamens, head of engineering at Khan Academy

Frequently asked questions

Why should I study with Bradfield?

If you are a strong programmer but strive to do more challenging and rewarding work, then Bradfield is here to serve you. We feel that it’s relatively easy to teach yourself a new language or technology, so we focus on the challenging computer science concepts that will make you a significantly better engineer, but that are hard to learn without some instruction and a supportive environment. As far as we know, we are the only institution that does this outside of a university environment.

What does a typical class look like?

We conduct highly interactive tutorial style classes of 6-10 students, combining question-and-answer style teaching with hands on problem solving. Before the class, your instructor will ask you to watch a video lecture or read a textbook section or paper. Instead of repeating the lecture in class, we will probe your understanding and consolidate your knowledge.

Many of our courses will involve a major project (like writing an interpreter or database system) or a series of minor projects (like adding features to an operating system, writing a load balancer or re-deriving TCP) and your instructor will help you extend your understanding to these and other applications.

How are courses structured?

For any given course, classes run twice per week for 4 weeks, for a total of 20 contact hours. We also suggest an hour of preparation per hour of class, and are able to provide more prework and homework for those who have the capacity.

Where are you located?

576 Natoma St, which is between 6th and 7th streets in the SoMa neighborhood of San Francisco. This is close to a number of transportation options.

How does Bradfield compare to a university?

The top computer science departments in the US have done an excellent job of identifying the lasting ideas in computer science that every practitioner should learn. Unfortunately, the conventional university format—lectures and exams, spread over four years—does not suit everybody. Relative to a university, our own offering covers many of the same big ideas and foundational topics, but in a radically different format.

By using online courseware to provide the equivalent of lectures, the in-person portion can be dedicated to deepening understanding. By limiting courses to strong programmers, keeping classes small, and eliminating excessively theoretical content as well as exams and graded assignments, we are able to cover a comparable amount of content in an expedited manner.

How does Bradfield compare to a bootcamp?

Bradfield exists to give you deep, valuable capabilities rather than your first programming job. We assume that you already are or could be a professional software engineer, but that you are striving to a higher standard. Many of our students did attend a bootcamp at some point, and valued the intensity and direct path to employability, but recognized that they would need to invest more time in their education in order to achieve their ultimate goals.

Are all of your classes in person?

Yes, at this stage all of our classes are in-person in San Francisco. Our highest priority is quality, and experience tells us that this is best done with everybody in the same room.

It is common for interstate or international students to travel to San Francisco to attend our courses. Often they will continue working remotely while they take a single class, or dedicate the time to studying with us full time. If you would like to explore this option, we will do our best to help you with accomodation and planning.

How practical are your courses?

Before we started teaching, we were senior software engineers and engineering managers, not researchers. All of our courses are practical, although they will push you toward a deeper understanding of the practice of software engineering. For instance, all of our courses involve either a major course project, or a series of smaller projects or exercises. These are all practical problems, but problems that would be impossible to solve without the depth of computer science understanding for which we strive.

As an example, students in our Databases course implement a simple relational database management system from scratch. This is practical insofar as it requires a significant amount of software engineering, and provides invaluable insight that any practicing software engineer ought to have about the database technologies with which they likely work. However, it requires a firm understanding of the theoretical concepts covered in the course.

Can I take all of your courses in lieu of a conventional computer science program?

Yes! We love when students do this, and have had some great success with recent high school graduates, dropouts from conventional college programs as well as more experienced engineers who would have otherwise pursued a masters degree. For these students, we provide some additional support and mentorship, and a discount on tuition, as part of our Core CS program.

How many classes can I take in parallel?

If you plan to study full time, you may be able to take three courses in parallel. Our courses are always scheduled such that this is possible. If you will continue to work or have other commitments, we generally suggesting taking only one.

When will you next run course X?

We schedule courses based on demand. Our most popular courses such as Algorithms and Data Structures or Computer Architecture tend to run every couple of months, whereas our more advanced courses such as Operating Systems or Distributed Systems run every 4-5 months.

Do you offer a degree, or transferable credits?

At this stage, we are unable to provide a degree or credit that would be recognized by a regionally accredited university. Doing so would require us to structure our courses much more similarly to theirs, and to administer exams, which we would prefer to avoid. We can however provide a certificate of completion or letter of accomplishment as desired.

Still have questions? Contact us.

Dear developer,

Average code is letting us down, and the stakes have never been higher: bits are replacing atoms, algorithms are attaining agency, and “infrastructure” is coming to mean cloud services, not roads and railways. Within the next few years, algorithms will be driving our cars and defining our virtual worlds.

Yet while the impact of technology is increasing, we are suffering a crisis of quality. Over 50,000 new software developers enter the industry every year, but only a fraction are on a path toward excellence. Few will produce lasting, high quality software.

At Bradfield we strive to close this gap by helping software developers become high impact software engineers. By focusing on foundational computer science disciplines like operating systems, computer architecture and databases, we prepare our graduates to produce high quality software in the short term and breakthrough technologies in the long term.

We hope you will join us.


Oz's signature

Ozan Onay