Computer Science - The Good Parts

Upcoming Course Dates (Chicago):

• Not Currently Scheduled

Instructor: David Beazley

Price: $2500

Includes:

  • Breakfast and lunch
  • Course materials

Other Courses | FAQ


Overview

Many software developers have followed a non-traditional path to their profession. Coding is often something that is picked up on the side, learned through work projects, or through bootcamps and workshops. Yet, in learning to code, it is easy to overlook various aspects of computer science itself. To be fair, working programmers are often focused on more practical matters that creating new algorithms, building a new data structure, or pondering the nature of computation. Nevertheless, computers are full of all kinds of interesting wizardry. This course is about that! It's a week of project-based exploration that tells the story of computers, computation, and computational thinking. It's the computer science course you wish you took!

Target Audience

This course is for programmers who want to deepen their understanding of computers and computational thinking. It is primarily aimed at people who already know how to code, but who have never taken traditional computer science courses. The topics might be useful for answering tricky job interview questions although that is not the primary concern. This is a course for the curious programmer.

Instruction Format

Each course day runs from 9:30am - 5:30pm and mostly consists of hands-on projects mixed with some short presentations. The main goal is to "learn by doing." Most of the hands-on projects involve coding, but part of the course involves building digital circuits from switches, transistors, and integrated circuits. For that, all of the required materials and components will be provided.


Hands-on circuit building

Prerequisites

Students should have a working knowledge of at least one programming language such as Python, Ruby, or C. At a minimum, you should be able to write and debug small programs and be generally familiar with common datatypes, control flow, and functions. Note: the primary focus of this class is on computer science, not advanced programming techniques, software engineering methodology, or the use of frameworks.

Topics

The course aims to explore four core topic areas from computer science.

All of this in a week? Are you nuts?

This course is not titled "Computer Science: All of It" and it's not meant to prepare you for entering a Ph.D. program in theoretical computer science. Instead, this is a week of "neat stuff" from computer science that you'll find to be mind-expanding, interesting, and fun. Over the week, you'll spend about 35-40 hours on the material--that's about the same about of time that a professor would spend lecturing in a 15-week semester. However, unlike the experience of listening to a professor in a lecture hall with several hundred students, our small class size of 6 people allows us to do things in a completely different manner. You'll learn by getting your hands dirty.

Frequently Asked Questions

Q: Is this a course for people new to programming?

A: No. You should already have prior programming experience. Some of the topics covered in this course would be considered to be "advanced topics" in a computer science degree. That said, if you are new to programming, you'll encounter a variety of new ideas in this course.

Q: Do I need to know advanced programming techniques?

A: No. This is not a course on software engineering. Most of the programming projects are given in Python. They mostly just involve basic features of Python (numbers, lists, tuples, functions, etc.).

Q: I've been programming for 20 years. Will I be bored?

A: I hope not! Although the course covers some CS fundamentals that might be review, the projects have been selected to spark curiousity and discussion. There's a pretty good chance you've never had to directly write code involving most of the material being covered.

Q: Does the course involve a lot of mathematical theory and formalism?

A: It's true that many CS courses can be quite mathematical in nature. This kind of approach might be useful for future Ph.D. students. However, it's not the approach taken here. The goal is to cover important ideas about computation by having you develop a stronger intuition for the basic principles that make them work. The course does not involve mathematical proofs.

About the Instructor

David Beazley is the author of the Python Essential Reference, 4th Edition (Addison Wesley) and Python Cookbook, 3rd Edition (O'Reilly Media). From 1998-2005, he was an assistant professor in the Department of Computer Science at the University of Chicago. He's been independently teaching computer science and software development courses through his company Dabeaz LLC since 2007. He's also a well-known conference speaker.


Copyright (C) 2005-2024, David Beazley