teaching

Instructor
CS 445/645/ECE 451 - Software Requirements Specification & Analysis (Fall 2024)

This course introduces students to the requirements definition phase of software development. It discusses processes, models, and notations, and processes for software requirements elicitation, identification, analysis, modeling, representation, specification, and validation. An important component is a group project: the software requirements specification of a large software system.

CS 246 - Object-Oriented Software Development (Spring 2021, Spring 2022, Fall 2023)

This course introduces students to basic UNIX software development tools and object-oriented programming in C++ to facilitate designing, coding, debugging, testing, and documenting medium-sized programs. Students learn to read a specification and design software to implement it. Important skills are selecting appropriate data structures and control structures, writing reusable code, reusing existing code, understanding basic performance issues, developing debugging skills, and learning to test a program.

Instructional Apprentice
CS 246E - Object-Oriented Software Development (Enriched) (Fall 2021, Fall 2022)

Introduction to object-oriented programming and to tools and techniques for software development. Designing, coding, debugging, testing, and documenting medium-sized programs: reading specifications and designing software to implement them; selecting appropriate data structures and control structures; writing reusable code; reusing existing code; basic performance issues; debuggers; test suites.

Teaching Assistant
CS 445/645/ECE 451 - Software Requirements Specification & Analysis (Winter 2021, Winter 2022)

This course introduces students to the requirements definition phase of software development. It discusses processes, models, and notations, and processes for software requirements elicitation, identification, analysis, modeling, representation, specification, and validation. An important component is a group project: the software requirements specification of a large software system.


SE 463 - Software Requirements: Specification & Analysis (Spring 2020, Spring 2024)

Introduces students to the requirements definition phase of software development; models, notations, and processes for software requirements, identification, representation, analysis, and validation. Cost estimation from early documents and specifications.


CS 442/642 - Principles of Programming Languages (Winter 2019, Winter 2020)

This course examines foundational issues in contemporary programming languages, including abstraction mechanisms, operational semantics, type systems, and extensibility.


CS 246E - Object-Oriented Software Development (Enriched) (Fall 2019, Fall 2020)

Introduction to object-oriented programming and to tools and techniques for software development. Designing, coding, debugging, testing, and documenting medium-sized programs: reading specifications and designing software to implement them; selecting appropriate data structures and control structures; writing reusable code; reusing existing code; basic performance issues; debuggers; test suites.


CS 246 - Object-Oriented Software Development (Fall 2018, Spring 2019)

This course introduces students to basic UNIX software development tools and object-oriented programming in C++ to facilitate designing, coding, debugging, testing, and documenting medium-sized programs. Students learn to read a specification and design software to implement it. Important skills are selecting appropriate data structures and control structures, writing reusable code, reusing existing code, understanding basic performance issues, developing debugging skills, and learning to test a program.


DIM 339 - Compiler Design (Fall 2017)

This course provides an understanding of the fundamentals of programming languages ​​and the concepts that guide their development. Students study methods and tools for implementing programming language compilers.