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.
We conduct highly interactive tutorial style classes of 10-15 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 shorter exercises (like writing a basic HTTP proxy or shell program) and your instructor will help you extend your understanding to these and other applications.
Classes run twice per week for 4-6 weeks, for a total of 18-20 contact hours. We also suggest 3-5 hours per week of outside of class work, between assigned pre-class work and wrapping up in-class exercises. Almost all of our students work full time as software engineers; we aim to calibrate course workloads such that a full time engineer can comfortably take one course at a time (or for the more ambitious, two at a time).
Live, instructor-led classes are conducted in an interactive tutorial style via Zoom. Students are expected to be actively engaged throughout the class, and to ask and answer questions. Overall, we have found engagement in classes conducted over Zoom to be equal to or greater than those which we previously conducted in person in San Francisco.
Classes are recorded, and recordings posted soon after the end of class. If you have any questions about the contents of the recording, you can ask your instructor via Slack.
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. Until recently, we've provided additonal support and mentorship as part of our Core CS program. In April 2020, we also launched a dedicated, intensive, 12 month part time program for self-taught engineers who might otherwise consider a master's degree: the Bradfield Computer Science Intensive.
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.
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.
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.
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.
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.
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.