B.* Joel Gonzalez

Hello! My name is Joel - I'm an electronics engineer and a giant geek. I'm passionate about all things ECE, and I love to teach and learn.

I'm a doctoral student in Electrical and Computer Engineering at Carnegie Mellon University (beginning 2021). I attended the University of Pennsylvania for my undergraduate education, where I studied Computer Science and Robotics (Class of 2020). I love thinking about electronics, from systems-level design down to device fabrication and everything in-between.

I was born in New York City, but I have lived in Pennsylvania since I was a kid. I spent about a decade in Northeast PA (or NEPA for short), six years in Philadelphia, and I'm now in Pittsburgh. I'm a Northeasterner at heart - please ask me about how much I love Wawa.

Please feel free to check out my Curriculum Vitae for an extensive description of my academic work. In the sections below, I'll talk about some exciting experiences that I've had in teaching, research interests, and some personal hobbies. I hope you enjoy learning a bit about myself!


*My first name is Brandon, but I prefer to go by my middle name, Joel. You can pronounce it as one syllable ("Jol") or two ("Jo-el") - I like both. :)


Research

As a graduate student, I've focused on electronics engineering and novel device research. For my doctoral program at CMU, I am advised by Professor Rick Carley of the ECE Department, where I am focusing on integrated systems design and device fabrication.

I joined CMU's Hacker Fab at its inception in January 2023. Our lab aims to create low cost, open-source hardware and software to fabricate integrated circuits, allowing for rapid prototyping and testing of chips. Feel free to check out our website for more information on our work!

I was awarded the GEM Fellowship as part of the 2023 cohort, and I had the opportunity to work as an intern at MIT Lincoln Lab in Summer 2023. I worked on RF systems design for communication systems. While I may not be able to share the experimental results from my internship, I am grateful to have had the chance to learn from experts in the field at the lab.


Teaching

Teaching is a passion of mine that I've always had. I began as a tutor back in my high school days for a few different subjects, which I then carried into my time at UPenn. In my first three undergraduate years, I worked as a peer tutor for various subjects, from calculus to computer systems to electromagnetism. But it wasn't until my fourth undergraduate year that I got the opportunity to become a teaching assistant for an introductory computer systems course.

Since then, I've had the great fortune to TA a number of courses in electrical engineering and computer science at UPenn. I've held office hours + recitations + lab sessions + lectures, developed course labs + projects + curricula, mentored students on projects, and more. Further below is a list of those courses, with semesters as head TA denoted with * and semesters online denoted with ^.

Additionally, I'm honored to have been inducted into the CIS TA Hall of Fame in Spring 2020. I aspire to continue teaching in the future, hopefully taking up a lecturing position as a professor after I complete my PhD. I've particularly enjoyed helping run lab courses - guiding students in learning how to do lab work themselves is an engaging, rewarding experience. Here's to many more years in teaching!

Introduction to Computer Systems

CIS240/CIT593

An introductory course on computer systems. Students learn the bottom-up fundamentals of modern computers, from CMOS transistor circuits to digital logic basics. Once they understand how datapaths and ISAs work, they switch to a top-down view and work in assembly and C to build their understanding of an operating system.

Course projects include writing a basic user/OS program in LC-4 assembly (an educational programming language similar to LC-3) and writing a disassembler and a compiler in C.

CIS240 (Fall/Spring) is the undergraduate version while CIT593 (Summer) is the graduate version, but they shared the same course material.

Fall 2018, Spring 2019, Summer 2019^

Operating Systems

CIS380/CIS548/CIT595

A project course on operating systems. This course builds upon the latter concepts introduced in CIS240/CIT593. Students learn about the basics of an operating system, including process management, system calls, memory management, scheduling algorithms, file systems, and more.

Students mainly work with Unix-like systems and program in C. Course projects include writing a user shell and building "PennOS", a Unix-like operating system with a priority scheduler and flat filesystem.

CIS380 (Fall) is the undergraduate version while CIS548 (Spring) and CIT595 (Summer) are the graduate versions, the latter belonging to the MCIT program. CIS548 had an additional project on memory management while CIT595 cut out the PennOS project and instead had a project on networked systems.

Fall 2019, Spring 2020*^, Summer 2020*^

Computer Architecture

CIS371/CIS501

A project course on computer architecture. This course builds upon the earlier concepts introduced in CIS240/CIT593. Students learn more about how modern processors are optimized for speed and efficiency. Methods discussed include pipelining, superscalar design, branch prediction, out-of-order execution, caching, multicore design, and more.

Throughout the course, students use Verilog to program digital logic building blocks such as a ripple-carry adder, a carrylook-ahead adder, a divider, and an ALU. They then take these building blocks to build up an LC-4 CPU, enhanced with pipelining and superscalar designs. Students simulate their designs using Vivado and upload their code to a ZedBoard FPGA.

CIS371 (Spring) is the undergraduate version while CIS501 (Fall) is the graduate version, but they shared the same course material.

Fall 2019, Spring 2020^

Introduction to Hardware/Software Lab ("Silicon Garage")

ESE190/M&TSI

An introductory course to hardware/software lab work using the Arduino platform. The course is designed for non-engineers who don't have much programming or circuit experience. Students learn the basics of programming and physics to build their own circuit projects using Arduino.

Students use the standard Arduino Uno model for the labs. Labs include turning on LEDs with pushbuttons, building a mini-thermostat, and using WiFi for IoT communication. They write their code in C and are encouraged to use external libraries as needed for their final project.

Here is the ESE190 website and the Devpost for Spring 2019's final projects. M&TSI is a high-school summer program at Penn that uses a condensed version of the ESE190 curriculum; here is the Devpost for Summer 2021's final projects.

Spring 2019, Summer 2021*^

Embedded Systems Lab

ESE350/519

A lab-based project course exploring embedded systems designs, implementations, and applications. The course starts from the hardware-level and covers power management and circuitry for an embedded system. It moves to low-level programming, understanding how to write C to control the various pins and registers on an embedded platform. It finishes with a conceptual, software-level tour of real-time operating systems before students build a final project of their choosing.

Students write their code in C on the Arduino Uno, using the standard C + AVR + FreeRTOS libraries for the labs and final project. For the final project, they are allowed to use other microcontrollers if preferred.

ESE350 (Spring) is the undergraduate version while ESE519 (Fall) is the graduate version, but they largely shared the same material. Here are the final project galleries - Fall 2020 + Spring 2021.

Fall 2020^, Spring 2021*^

Senior Design Capstone

ESE450/451

Students in electrical engineering, systems engineering, computer engineering, network engineering, and more take this two-part capstone course to build a project of their own choosing. They frequently give updates on their progress through staff meetings, written reports, and class presentations, culminating in a demo day finale + final report/video at the end of both semesters.

There is always a wide variety in the projects that we see for ESE Senior Design, ranging from pure software to heavy hardware to a mix of both. I've had the joy of mentoring both the Class of 2020 + Class of 2021 in ESE Senior Design and I'm consistently impressed by the effort and creativity of my students.

Here is the ESE Senior Design website and the Class of 2020 Devpost + Class of 2021 Devpost, if you'd like to check out some of the awesome work that our students have done.

Fall 2019, Spring 2020^, Fall 2020*^, Spring 2021*^

Interests

I've come to love electrical and computer engineering and I'm excited to dedicate myself to this field, both as a teacher and a researcher, but I wasn't always fixated on engineering. In fact, when I first started college, I was set on becoming a history major! It wasn't until I took my first few courses in STEM that I began to fall in love with engineering, as difficult as it can be. I made the transfer at the end of my second year and never looked back - but I still care lots about the humanities and social sciences.

Besides academics, I'm also an avid gamer; I've grown up playing video games my entire life. I'm a big fan of retro games from my childhood, as well as more modern PC games. I am a longtime enjoyer of DDR (DanceDanceRevolution), and I love to practice and improve when I can! Additionally, I'm a lover of music, of all varieties - rock and metal, electronic, and much more. Some of my favorite artists include TOOL and Aesop Rock, among many others. I also love to play the bass guitar and learn riffs from my favorite songs in my spare time.