Kareem Zidane

Harvard University

About Me

I'm a preceptor at Harvard University. I do software development, DevOps, system administration and a little bit of teaching for CS50 (Harvard's introduction to computer science and programming) and a few other courses.

I graduated from Helwan University, in Cairo, Egypt, with a bachelor's degree in accounting in 2017, but I've always been passionate about computers. I started studying computer science and programming using online resources in 2014, made my first contribution to an open source project in 2015, and officially joined the CS50 team at Harvard in 2017.



I help design, develop, and maintain the CS50 IDE, a customized version of AWS Cloud9, to make it more accessible to students with little or no prior computer science or programming experience. I develop and maintain the infrastructure backend for the IDE on top of Kubernetes and other services, a set of plugins that customize and simplify the IDE's look and feel, and an offline version of the IDE that runs on top of Docker.


The user experience of Cloud9's graphical debugger wasn't pedagogically ideal for us. We encourage students to use the terminal to compile and execute their programs to give them a sense of how things work. We wanted students to be able to start the debugger from the terminal too, but that wasn't easily possible on Cloud9. I contributed to Debug50, a Cloud9 plugin and gdb interface that makes it possible to start the debugger from Cloud9's terminal and provides some useful feedback to students. Recently, I also added support for debugging Python scripts by integrating ikp3db.


An Electron app built on top of Bull, FFmpeg, ReactJS, and different AWS and Google APIs that simplifies some workflows for CS50's production team by automating tasks such as transcoding videos to different formats and resolutions, generating audio and video assets, quality assurance, and publishing content to CS50's content delivery network.