Teaching at Bucknell and Beyond
Below, I’ve included both the courses I’ve taught at CU Boulder and Bucknell and my broader work in teaching and pedagogy.
I believe that the most critical societal challenges in Computer Science are sociotechnical in nature, and that CS education needs to reprioritize its training, recruitment, and retention of students to meet these challenges. My pedagogy is informed by CS education research, my curricular development integrates social responsibility directly into technical content, and my courses look to amplify voices that have been historically muted within Computer Science.
Courses at CU Boulder
- INFO 4602: Information Visualization
- In Fall 2023, I redesigned the undergraduate information visualization course. INFO 4602 covers traditional information visualization topics, but with a particular emphasis on the public communication and social impact of visualization. Spring 2024’s syllabus can be seen here.
Courses at Bucknell
- CSCI 187: Creative Computing and Society
- A course created by Darakhshan Mir, CSCI 187 introduces computing in the context of creativity and examining problems of social good. Students create visual artifacts (using the javascript library p5js) that will empower them to investigate, and draw novel insights from, data that may be social, historical, or textual in nature. Supplemented with discussions on computing’s impact on society.
- CSCI 201: Computer Science Seminar
- Added to our curriculum in Fall 2019, I designed and taught the first iteration of this course, which is taken by 2nd-year CS students. The course focuses on broader perspectives of CS (e.g. humanities, art, social sciences), career journey conversations with alumni, reflections (and mentorship) on personal goals, professional development (resumes, interviewing), and open-ended skill-building.
- CSCI 203: Introduction to Computer Science
- In Fall 2019, I redesigned our introductory CS course from the ground up - writing 10+ labs, ~50 applied homework problems (and automated feedback), and multiple projects. Currently, 20-25% of all Bucknell students take this course before graduation. The responsible computing labs that I developed for this course publicly available and used by a number of institutions across the country.
- CSCI 204: Data Structures & Algorithms
- We use python to teach OOP, Big O intuition, and many standard data structures: lists, heaps, hashmaps, trees, queues, stacks, etc.
- CSCI 205: Software Engineering & Design
- Originally created by Brian King, we run a flipped-classroom software engineering course, in which students learn Java, OOP design patterns, git, agile/scrum processes, and culminate by building a larger software system with a group.
- CSCI 358: Human-Computer Interaction
- I created and teach Bucknell’s 300-level CS elective introducing students to the design processes and technical breadth of Human-Computer Interaction. I redesigned traditional HCI courses to create a more flipped classroom environment that encourages design, experimentation, andd communication. Rather than a semester-long project, student groups engage in rapid design sprints through 4-6 input/output modalities and goals. This structure is now used by a handful of universities in the USA.
- CSCI 479: Computer Science Design Project
- The capstone course for our BA and BS students attaining degrees through the College of Arts & Sciences. In this course, I teach technical writing and communication, instruct on project management, and guide students through system-building decisions to deliver a technical application to local or external clients.