~/courses/intro_to_computer_programming

An introduction to the fundamentals of programming using a high-level, structured programming language such as C. Emphasis will be placed on syntax and semantics of the language to write correct, efficient, and easily modifiable programs. Topics include, but are not limited to, assignment statements, conditional and iterative control structures, functions, simple data structures, and software development.

~/courses/advanced_programming_data_structures

This course covers more advanced fundamentals of programming including problem-solving strategies, the concept of an algorithm and basic data structures in an object-oriented language such as C++. Various programming concepts will be introduced such as recursion, string processing, classes, sorting, searching, linked lists, stacks, queues, and trees.

~/courses/computer_systems

An introduction to instruction set architecture, microarchitecture, and system architecture. Topics include basic computer organization, central processor and memory, addressing techniques, data representation, fundamental programming techniques in assembly and machine language as it relates to operating systems and high level languages. The course also includes exposure to networking and communication as well as parallel and distributed computing.

~/courses/database_systems

This course covers database design and the use of databases in web, mobile and cloud applications. It includes extensive coverage of the relational model, relational algebra, and SQL as well as NoSQL designs. The course also features database design and relational design principles based on dependencies and normal forms. There will be a programming project, which explores database design and management by utilizing appropriate features of SQL.

~/courses/operating_systems

An introduction to the various components of an operating system, including schedulers, memory management, interrupt handling, resource allocation, security and protection. Examples presented will be based on UNIX and other popular operating systems. Each student will participate in projects that involve kernel modifications, shell scripting, and simulations of components within the operating system.

~/courses/advanced_data_structures_algorithms

This course places the focus on algorithm development utilizing advanced data structures such as graphs and trees. Various programming strategies will be addressed such as greedy, divide and conquer, backtracking, branch and bound and dynamic programming. Other topics include recursion, algorithm analysis, object oriented programming and event driven programs.

~/courses/discrete_structures

The purpose of this course is to understand and use (abstract) discrete structures that are backbones of computer science. This course teaches the students techniques in how to think logically and mathematically and apply these techniques in solving problems. In particular, this class is meant to introduce logic, proofs, sets, relations, functions, counting, and probability, with an emphasis on applications in computer science.

~/courses/web_technologies

A study of advanced web technologies with an emphasis on full stack development including usage of a database to facilitate the retention and delivery of information. Various scripting languages such as PHP and JavaScript will be used during the course. Each student will participate in a series of projects that will focus on creation of a dynamic interactive web site.