Courses Taught
North Carolina State University
As a Graduate Teaching Assistant at North Carolina State University, I lectured in a variety of graduate-level and senior undergraduate courses within the Computer Science department. After transitioning to a Research Assistant role, I continued teaching through guest lectures in courses where my research expertise was relevant.
Object-Oriented Languages and Systems (CSC/ECE 517)
Taught: Fall 2010, Fall 2011
Course Size: Approximately 150
Course Setting: Large Lecture Hall, with simultaneous Distance Education component.
Course Description: Object-oriented languages and systems built with object-oriented software components. Object-oriented design methodologies, such as CRC cards and the Unified Modeling Language (UML). Requirement analysis. Design patterns. Agile methods. Object-oriented programming environments, such as the Eclipse platform. Platforms for Web services, such as J2EE. Project required.
This course is an elective for all graduate students in Computer Science. It is cross-listed with the Electrical and Computer Engineering department.
Responsibilities: Formally, I was a Teaching Assistant for this course the first semester. In addition to developing the course programming project for the semester, I developed exam questions. I also lectured on a variety of topics in the course. The course topic was provided to me by the course instructor, but I was given wide latitude in the actual material that would be covered within that topic. The course instructor also provided me with recorded lectures from previous semesters to use as a guideline. Because of my extensive lecture responsibilities, grading was largely handled by other Teaching Assistants.
In my second semester, I was asked to return as a guest lecturer.
Fall 2010 Lectures
| Lecture | Duration |
|---|---|
| Lecture 3: Refactoring and Version Control | 75 minutes |
| Lecture 4: Introduction to Ruby | 75 minutes |
| Lecture 6: Ruby in Eclipse | 75 minutes |
| Lecture 8: Object-Relational Mapping | 40 minutes |
| Lecture 10: Testing in Rails, Integration Testing | 75 minutes |
Fall 2011 Lectures
| Lecture | Duration |
|---|---|
| Lecture 7: Unit Testing in Ruby | 75 minutes |
| Lecture 10: Rails Introduction, Testing in Rails | 75 minutes |
| Lecture 16: Elegance and Inheritance | 75 minutes |
Architecture of Parallel Computers (CSC/ECE 506)
Taught: Spring 2011
Course Size: Approximately 30
Course Setting: Live Mediasite Classroom, with simultaneous Distance Education component.
Course Description: The need for parallel and massively parallel computers. Taxonomy of parallel computer architecture, and programming models for parallel architectures. Example parallel algorithms. Shared-memory vs. distributed-memory architectures. Correctness and performance issues. Cache coherence and memory consistency. Bus-based and scalable directory-based multiprocessors. Interconnection-network topologies and switch design. Brief overview of advanced topics such as multiprocessor prefetching and speculative parallel execution.
This course can be used to satisfy the Systems requirement for Computer Science graduate students. This course is cross-listed with the Electrical and Computer Engineering department.
Responsibilities: I was formally a Mentored Teaching Assistant for this course. My primary responsibilities included grading, answering student questions, and developing assignments and projects for the course. Opportunities for lecturing in this course were limited to occasions where the instructor was not available. The course instructor reviewed the assignments and projects before releasing them to the students, but the assignment contents were left to my discretion.
Lectures
| Lecture | Duration |
|---|---|
| Lecture 10: Memory Systems and Cache Design | 75 minutes |
Software Engineering as a Human Activity (CSC 791)
Taught: Spring 2011
Course Size: Approximately 25
Course Setting: Seminar / Conference
Course Description: This course introduces students to software engineering by studying the people who practice it. Students will explore both software engineering as traditionally defined, but also disciplines that transform how we understand software engineering such as psychology and sociology. Students will study the usability of software engineering tools, the psychology of programming, performance of software developers, experimental methods in observing software engineers, developing software collaboratively, distributed development and coordination, and cultural differences between software developers.
This course is an elective, special topic. It is available to graduate students in Computer Science and requires the student to have taken a previous course in Software Engineering.
Responsibilities: As a seminar course, I was responsible for presenting content from research papers in a discussion-based environment. Other than being assigned the papers to present for the seminar, no further faculty involvement was present. For the second lecture, I fully utilized the "course flipping" model by requiring students to read the material beforehand, and doing all activities and assignments in class.
Lectures
| Lecture | Duration |
|---|---|
| Lecture 3/10/2011: On the Difficulty of Replicating Human Subjects Studies | 75 minutes |
| Lecture 3/16/2011: Substantiating Programmer Variability | 75 minutes |
Computer Game Design and Development (CSC 481)
Taught: Fall 2011
Course Size: Approximately 50
Course Setting: Traditional Class Room
Course Description: An introduction to the technologies and practices underlying computer and console game development and the principles involved in effective game design and production. Topics include computer game graphics, sound and audio, level design, principles of gameplay, interactive storytelling, character control and artificial intelligence, user interface design. Programming project required.
This course is a senior-level course offered to undergraduate students in Computer Science. It is an elective for most students, and a requirement for Computer Science students with a Games concentration.
Responsibilities: I was a guest lecturer for this course, because the faculty member had other obligations this day. I was allowed to select both the topic and content for the lecture, as long as it was tangentially related to game design and development. The only request by the faculty member was that I submit an exam question related to my topic to ensure that students attended my lecture.
Lectures
| Lecture | Duration |
|---|---|
| Lecture 12/30/2011: Game Theory and Artificial Intelligence | 75 minutes |
Wayne Community College
| ID | Course | Enrollment | Semesters | |
|---|---|---|---|---|
| DBA 110 | Database Concepts | ~15 | Spring 2009, Spring 2010, Spring 2011, Spring 2012 | |
| DBA 115 (120) | Database Applications | ~15 | Spring 2009, Spring 2010, Spring 2011, Spring 2012 | |
| SEC 150 | Secure Communications | ~12 | Spring 2011, Spring 2012 | |
| SGD 112 | Fundamentals of Game Design | ~12 | Spring 2010 | |
| SGD 125 | Artificial Intelligence in Games | ~12 | Fall 2012 | |
| CTS 289 | Capstone: System Support Project | ~12 | Fall 2009 |