Formally, I have taught courses at both North Carolina State University as well as Wayne Community College. This portfolio focuses on my teaching experiences at NC State.
As a Teaching Assistant (TA) at North Carolina State University, I have lectured in a variety of graduate school and senior undergraduate classes within the Computer Science department. When I became a Research Assistant (RA), I continued my teaching through occasional guest lectures for faculty members in the department.
Taught: Fall 2010, Fall 2011
Course Size: Approximately 150
Course Setting: Large Lecture Hall, with simultaneous Distance Education component.
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.
Fall 2010 Lectures:
Fall 2011 Lectures:
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.
Taught: Spring 2011
Course Size: Approximately 30
Course Setting: Live Mediasite Classroom, with simultaneous Distance Education component.
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.
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.
Course Size: Approximately 25
Course Setting: Seminar / Conference
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 an previous course in Software Engineering.
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 before hand, and doing all activities and assignments in class.
Taught: Fall 2011
Course Size: Approximately 50
Course Setting: Traditional Class Room
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, principlesof 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.