Classes

Listing of classes taken as an undergraduate and graduate student.

As a student in electrical engineering, computer engineering, and computer science, I've been able to take a wider range of classes than most students (and a lot more!). Hopefully this page gives you an idea of my academic knowledge and interests.


Graduate Courses

Courses taken as a MS student (Computer Science) in the Security track:

Fundamental issues related to the design of operating systems. Process scheduling and coordination, deadlock, memory management and elements of distributed systems.
Introduction to the conceptual and formal apparatus of mathematical logic, to mathematical concepts underlying the process of logical formalization, and to the applications of various logics across a broad spectrum of problems in computer science and artificial intelligence.
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.
Introduces students to the discipline of designing, developing, and testing secure and dependable software-based systems. Students will learn about risks and vulnerabilities, and effective software security techniques. Topics include common vulnerabilities, access control, information leakage, logging, usability, risk analysis, testing, design principles, security policies, and privacy. Project required.
Introduction to the problems and techniques for automated discovery of knowledge in databases. Topics include representation, evaluation, and formalization of knowledge for discovery; classification, prediction, clustering, and association methods. Selected applications in commerce, security, and bioinformatics.
Complex and specialized data structures relevant to design and development of effective and efficient software. Hardware characteristics of storage media. Primary file organizations. Hashing functions and collision resolution techniques. Low level and bit level structures including signatures, superimposed coding, disjoint coding and Bloom filters. Tree and related structures including AVL trees, B*trees, tries and dynamic hashing techniques.
Security policies, models, and mechanisms for secrecy, integrity, and availability. Basic cryptography and its applications; operating system models and mechanisms for mandatory and discretionary controls; introduction to database security; securityin distributed systems; network security [firewalls, IPsec, and SSL]; and control and prevention of viruses and other rogue programs.
Cryptography is everywhere in our everyday life. Whenever we connect to Facebook, shop on Amazon, call Lyft, our device runs a sequence of cryptographic protocols that enable for secure communication over a public network such as the Internet. In this class you will learn the concepts and the algorithms behind such cryptographic protocols. You will learn how to formally define security properties such as confidentiality and integrity of data; you will be able to formally prove that a cryptographic protocol achieves a certain security property; and you will be able to identify the cryptographic tools needed in real world protocols [such as SSL, Bitcoin]. You will also discover that cryptography has a much broader range of applications. It solves absolutely paradoxical problems such as proving knowledge of a secret without ever revealing the secret [zero knowledge proofs], or computing the output of a function without ever knowing the input of the function [secure computation] ... ... Note that in this course we do not focus on implementation, neither programming of cryptographic schemes.
This course provides a broad introduction to data privacy, an important topic for technology developers as well as legislators and regulators. It will give students interested in pursuing privacy research an introduction to active research areas and open problems. This course will also expose students to many of the issues that privacy engineers, program managers, researchers and designers deal with in industry. Includes studies of the privacy areas of Inference Attacks and Defenses, Online Tracking, Advertising and Web Privacy, Measurement Challenges, and Measurement Applications.
A study of network security policies, models, and mechanisms. Topics include: network security models; review of cryptographic techniques; internet key management protocols; electronic payments protocols and systems; intrusion detection and correlation; broadcast authentication; group key management; security in mobile ad-hoc networks; security in sensor networks.

Undergraduate Courses

Courses taken as a BS student (Electrical and Computer Engineering):

Introduction to key concepts in computer systems. Number representations, switching circuits, logic design, microprocessor design, assembly language programming, input/output, interrupts and traps.
Ohm's law and Kirchoff's laws; circuits with resistors, photocells, diodes and LEDs; rectifier circuits; first order RC circuits; periodic signals in time and frequency domains, instantaneous, real and apparent power; DC and RMS value; magnitude andpower spectra, dB, dBW, operational amplifier circuits, analog signal processing systems including amplification, clipping, filtering, addition, multiplication, AM modulation sampling and reconstruction. Weekly hardware laboratory utilizing multimeter, function generator, oscilloscope and spectrum analyzer and custom hardware for experiments on various circuits and systems.
Computer systems programming using the C language. Translation of C into assembly language. Introduction to fundamental data structures: array, list, tree, hash table.
Introduction to theory, analysis and design of electric circuits. Voltage, current, power, energy, resistance, capacitance, inductance. Kirchhoff's laws node analysis, mesh analysis, Thevenin's theorem, Norton's theorem, steady state and transient analysis, AC, DC, phasors, operational amplifiers, transfer functions.
Introduction to digital logic design. Boolean algebra, switching functions, Karnaugh maps, modular combinational circuit design, latches, flip-flops, finite state machines, synchronous sequential circuit design, datapaths, memory technologies, caches, and memory hierarchies. Use of several CAD tools for simulation, logic minimization, synthesis, state assignment, and technology mapping.
This course is designed to acquaint you with the basic mathematical tools used in electrical and computer engineering. The concepts covered in this course will be used in higher level courses and, more importantly, throughout your career as an engineer. Major topics of the course include complex numbers, real and complex functions, signal representation, elementary matrix algebra, solutions to linear systems of equations, linear differential equations, laplace transforms used for solving linear differential equations, fourier series and transforms and their uses in solving ECE problems.
Representation and analysis of linear systems using differential equations: impulse response and convolution, Fourier series, and Fourier and Laplace transformations for discrete time and continuous time signals. Emphasis on interpreting system descriptions in terms of transient and steady-state response. Digital signal processing.
Introduction to the physics of semiconductors, PN Junctions, BJT and MOS field Effect Transistors: Physics of operation, IV characteristics, load line, quiescent point of operation, PSPICE analysis; diode circuit analysis; voltage regulation; Single Stage Transistor Amplifiers: Common Emitter and Common Source configurations, biasing, inverting and non-inverting amplifiers; follower circuits; calculation of small signal voltage gain, current gain, coupling and bypass capacitors; Multistage ac-coupled amplifiers; small signal modeling; input resistance and output resistance; logic inverters.
This course prepared the students to formulate and solve electromagnetic problems relevant to all fields of electrical and computer engineering and that will find application in subsequent courses in RF circuits, photonics, microwaves, wireless networks, computers, bioengineering, and nanoelectronics. Primary topics include static electric and magnetic fields, Maxwell's equations and force laws, wave propagation, reflection and refraction of plane waves, transient and steady-state behavior of waves on transmission lines.
Introduction to designing microcontroller-based embedded computer systems using assembly and C programs to control input/output peripherals. Use of embedded operating system.
Analog system dynamics, open and closed loop control, block diagrams and signal flow graphs, input-output relationships, stability analyses using Routh-Hurwitz, root-locus and Nyquist, time and frequency domain analysis and design of analog control systems. Use of computer-aided analysis and design tools. Class project.
Object-oriented design and programming of complex software. Java programming. Data abstraction and data structures. Programming by contract. Software testing. Interacting classes and interface design. Stream input/output, exceptions. Iterators, recursion, analysis of running time.
Design principles for complex digital systems. Decomposition of functional and interface specifications into block-diagrams and simulation with hardware description languages. Synthesis of gate-level descriptions from register-transfer level descriptions. Design and test of increasingly complex systems.
Introduction to engineering as a profession including issues surrounding computer engineering. Topics include professional and ethical responsibilities, risks and liabilities, intellectual property, and privacy. Economic issues including entrepreneurship and globalization.
An overview of digital communications for wireline and wireless channels which focuses on reliable data transmission in the presence of bandwidth constraints and noise. The emphasis is on the unifying principles common to all communications systems, examples include digital telephony, compact discs, high-speed modems and satellite communications.
Basic principles required to understand the operation of solid-state devices. Semiconductor device equations developed from fundamental concepts. P-N junction theory developed and applied to the analysis of devices such as varactors, detectors, solar cells, bipolar transistors, field-effect transistors. Emphasis on device physics rather than circuit applications.
This course focuses on engineering principles of computer communications and networking, including layering concepts, overview of protocols, architectures for local, metropolitan, and wide-area networks, routing protocols, internet operations, transport control and applications, emerging issues in computer networks.
Concepts of electrical digital signal processing: Discrete-Time Signals and Systems, Z-Transform, Frequency Analysis of Signals and Systems, Digital Filter Design. Analog-to Digital-to-Analog Conversion, Discrete Fourier Transform.
Provide insight into current compiler designs dealing with present and future generations of high performance processors and embedded systems. Investigate dataflow analysis and memory disambiguation, classical and parallelism enhancing optimizations, scheduling and speculative execution, and register allocation. Review of techniques used in current research compilers.
Applications of engineering and basic sciences to the total design of electrical and/or computer engineering circuits and systems. Consideration of the design process including concept and feasibility study, systems design, detailed design, project management, cost effectiveness, along with development and evaluation of a prototype accomplished through design-team project activity. Supported with introduction to a parallel functions impacting engineering design process to including: industrial design, finance, operations, etc.
Applications of engineering and basic sciences to the total design of electrical engineering circuits and systems. Consideration of the design process including feasibility study, preliminary design detail, cost effectiveness, along with development and evaluation of a prototype accomplished through design-team project activity. Complete written and oral engineering report required.
Design and implementation of embedded computer systems. The student will extend previous knowledge of the use of microcontrollers, C and assembly programming, real-time methods, computer architecture, simulation, interfacing, system development andcommunication networks. System performance is measured in terms of power consumption, speed and reliabiity. Efficient methods for project development and testing are emphasized.
Propositional logic and the predicate calculus. Logic gates and circuits. Methods of proof. Elementary set theory. Mathematical induction. Recursive definitions and algorithms. Solving recurrences. The analysis of algorithms and asymptotic growth of functions. Elementary combinatorics. Introduction to graph theory. Ordered sets, including posets and equivalence relations. Introduction to formal languages and automata.
Fundamental concepts of computer operating systems for computer scientists, including memory management, file systems, process management, distributed systems, deadlocks, and basic security and system accounting.
Study of three classical formal models of computation--finite state machines, context-free grammars, and Turing machines--and the corresponding families of formal languages. Power and limitations of each model. Parsing. Non-determinism. The Halting Problem and undecidability. The classes P and NP, and NP-completeness.
All three levels of Calculus.
Basic concepts of probability and distribution theory for students in the physical sciences, computer science and engineering. Provides the background necessary to begin study of statistical estimation, inference, regression analysis, and analysis of variance.