Abstraction Functions and Representation Invariants
Dynamic resource management
Creation and Destruction
Rules of Safety
Container Types
Container Iteration
C++ Language and Programming
Arrays
File I/O
Templates
Exceptions
Recursion
Functors
Structs, Classes, and Objects
Overloading of Functions and Operators
Pointers and dynamic arrays
EECS 281 (Data Structures/Algorithms)
Introduction to data structures and algorithms, algorithm analysis, and O-notation.
Fundamental Data Structures
Priority Queues
Hash Tables
Priority Queues
Hash Tables
Binary Trees
Search Trees
Balanced Trees
Graphs
Algorithm Analysis and O-Notation
Searching and Sorting Algorithms
Recursive Algorithms
Basic Graph Algorithms
Greedy Algorithms
Divide and Conquer Strategy
EECS 285 (Java Applications)
Introduction to the Java language, with graphical user interfaces and mobile programming in Java.
Java Language
Syntax
Control Flow
Objects and Types
Inheritance
Polymorphism
Nested and Local Classes
Graphical User Interfaces
Mobile Programming (Android)
Projects consist of simple Java applications, desktop game, and
a Android budget tracking app
EECS 270 (Digital Logic Design)
Binary and Non Binary Systems
Boolean Algebra
Logic Gates
Circuits
Standard Combinational Circuits
Sequential Circuits
Synthesis of Synchronous Sequential Circuits
Arithmetic Circuits
Computer Logic
PLAs
ROM
RAM
Computer-Aided Design
Laboratory includes hardware design (Using an FPGA and Verilog) and CAD experiments.
EECS 370 (Computer Organization)
Instructions executed by a processor and
how to use these instructions in simple assembly-language programs.
Datapath and control for multiple implementations of a processor
CPU Design
Pipelining
Caches
Virtual Memory
Input/Output
Assembly language Programming.
Projects were written in C for a simple mock assembly language and processor called (LC2K).
Projects consisted of an Assembler,CPU Simulator(simulate registers, memory, cache, etc.), Linker,
Pipeline the Simulator, and a Cache Simulator
EECS 376 (Foundations of Computer Science)
An Introduction to Computer Theory
Finite Automata
Regular Languages
Pushdown Automata
Context-Free Languages
Turing Machines
Recursive Languages and Functions
Computational Complexity
Cryptography
EECS 441 (Mobile App Development for Entrepreneurs)
I took EECS 441 as my MDE (Major Design Experience). We spent the entire sememester
working on a single project using the Agile process. The project can be found on my
projects page.
Mobile App Development
Entrepreneurship
Team Management
Product Design
Project Management
Code Development
Testing
EECS 484 (Database Management Systems)
Concepts and methods for the design, creation, query and management of large enterprise databases.
Query Languages/Databases
SQL
Oracle SQL
Embedded SQL
Mongodb
Database Design
Integrity
Normalization
Transaction Management
Access Methods
Query Optimization
Concurrency control and recovery
EECS 485 (Web Systems)
Concepts surrounding web systems, applications, and internet scale distributed systems.
Projects include an Instagram clone in the first half of the semester,
and a Google clone in the second. Projects Page
Client/Server Protocols
Web Security
Information Retrieval and Search Engines
DataBases and Scalable Data Processing
Fault Tolerant Systems
MapReduce
Hadoop
EECS 490 (Programming Languages)
Fundamental concepts in programming languages.
Programming Language Types
Functional
Imperative
Object-Oriented
Logic Programming Languages
Programming Language Features
Naming
Modularity
Concurrency
Memory Management
Control Flow
Methodologies, Techniques, and Tools for Writing Correct and Maintainable Programs.
EECS 493 (User Interface Development)
Concepts and techniques for designing computer system user interfaces
to be easy to learn and use, with an introduction to their implementation.