Some of my relevant coursework
Fall 2023-24
EECS 485 - Web Systems: Concepts surrounding web systems, applications, and internet scale distributed systems. Topics covered include client/server protocols, security, information retrieval and search engines, scalable data processing, and fault tolerant systems. The course has substantial projects involving development of web applications and web systems.
Winter 2022-23
EECS 470 - Computer Architecture: Topics include out-of-order processors and speculation, memory hierarchies, branch prediction, virtual memory, cache design, multi-processors, and parallel processing including cache coherence and consistency. Emphasis on power and performance trade-offs. Groups design an advanced (e.g. out-of-order, multi-core, SMT) processor using an HDL.
TCHNCLCM 497 - Advanced Technical Communication for Computer Science: Advanced technical communication for computer science. Design and writing of user and task analyses, requirements documents, specifications, proposals, reports and documentation, all aimed at diverse organizational audiences. Preparation and delivery of final oral presentations and written project reports.
EECS 496 - Major Design Experience - Professionalism: Design principles for multidisciplinary team projects, team strategies, entrepreneurial skills, ethics, social and environmental awareness, and life long learning.
Fall 2022-23
EECS 497 - Human Centered Software Design and Development: Team-based, user-centered design and development of complex software systems incorporating effective design strategies and project management methodologies. Topics include customer discovery, contextual inquiry, prototyping, process models, creative problem solving, inclusive thinking, team dynamics, social concerns, and testing strategies.
EECS 442 - Computer Vision: An introduction to 2D and 3D computer vision. Topics include: cameras models, the geometry of multiple views; shape reconstruction methods from visual cues; low-level image processing techniques such as feature detection; high-level vision problems such as object recognition and scene understanding.
EECS 388 - Intro. to Computer Security: This course introduces the principles and practices of computer security as applied to software, host systems, and networks. It covers the foundations of building, using, and managing secure systems. Topics include standard cryptographic functions and protocols, threats and defenses for real-world systems, incident responses, and computer forensics.
TCHNCLCM 300 - Technical Communication for Electrical and Computer Science: Professional communication to the general public, managers, and other professionals about electrical and computer engineering ideas as presented in written reports and oral presentations.
Winter 2021-22
EECS 376 - Foundations of Computer Science: Introduction to theory of computation. Models of computation: finite state machines, Turing machines. Decidable and undecidable problems. Polynomial time computability and paradigms of algorithm design. computational complexity emphasizing NP-hardness. Coping with intractability. Exploiting intractability: cryptography.
EECS 215 - Intro. to Electronic Circuits: Introduction to electronic circuits. Basic Concepts of voltage and current; Kirchhoff’s voltage and current laws; Ohm’s law; voltage and current sources; Thevenin and Norton equivalent circuits; DC and low frequency active circuits using operational amplifiers, diodes, and transistors; small signal analysis; energy and power. Time- and frequency-domain analysis of RLC circuits. Basic passive and active electronic filters. Laboratory experience with electrical signals and circuits.
EECS 270 - Intro. to Logic Design: Boolean algebra, digital design techniques, logic gates, logic and state minimization, standard combinational circuits, latches and flip-flops, sequential circuits, synthesis of synchronous sequential circuits, state machines, FPGAs, memories, arithmetic circuits, and computer-aided design. Laboratory involves CAD-based design implemented on an FPGA including elementary interfacing.
Fall 2021-22
EECS 370 - Introduction to Computer Organization: Basic concepts of computer organization and hardware. Instructions executed by a processor and how to use these instructions in simple assembly-language programs. Stored-program concept. Datapath and control for multiple implementations of a processor. Performance evaluation, pipelining, caches, virtual memory, input/output.
EECS 281 - Data Structures and Algorithms: Introduction to algorithm analysis and O-notation; Fundamental data structures including lists, stacks, queues, priority queues, hash tables, binary trees, search trees, balanced trees and graphs; searching and sorting algorithms; recursive algorithms; basic graph algorithms; introduction to greedy algorithms and divide and conquer strategy. Several programming assignments.
Winter 2020-21
EECS 203 - Discrete Mathematics: Introduction to the mathematical foundations of computer science. Topics covered include: propositional and predicate logic, set theory, function and relations, growth of functions and asymptotic notation, introduction to algorithms, elementary combinatorics and graph theory and discrete probability theory.
Fall 2020-21
EECS 280 - Programming and Intro. Data Structures: Algorithm development and effective programming, top-down analysis, structured programming, testing and program correctness. Program language syntax and static and runtime semantics. Scope, procedure instantiation, recursion, abstract data types and parameter passing methods. Structured data types, pointers, linked data structures, stacks, queues, arrays, records and trees.
ENGR 100:400 - Intro. Autonomous Electronic Systems: Development and implementation of electronic systems to manage sensors, signal processing, control algorithms, etc. in order to create an autonomous vehicle that responds to changes in its environment while carrying out complex tasks.