Continues the progression of students’ software development skills through programming,
designing, and implementing larger software projects and emphasizes more advanced
topics such as dynamic data structures and object-oriented paradigms using one or
more modern programming languages.
Data structures and formalisms used in computing, such as asymptotic behavior of algorithms,
graph, table, relational and set data structures, context-free grammars to describe
patterns, assertions in propositional logic form, amortized analysis to evaluate efficiency
of data structures such as splay trees and O(1) expansion of tables.
Security goals, threats and vulnerabilities. Cryptography, program security and operating
system security issues. Basic network security. Planning, policies and risk analysis.
Introduces theoretical and practical aspects of computer systems security and present
ways to protect a computer system. Topics include operating system security, hardware
security modules, cryptoprocessors, hypervisors, trusted platform modules, virtualization
security, storage security, trusted hardware, application isolation, and cloud and
IoT security. Students will also explore emerging security challenges facing computer
systems based on recent research papers.
Introduction to the design and operation of systems software. Analysis is made of
current system software technology, including operating systems, language translation
systems and file systems.
Overview of computers and programming. Focus is on problem analysis and techniques
used in the development of algorithms and computer programs using a modern programming
language. Topics include data types, expressions, statements, and operators, input/output,
conditional statements, iteration, functions, lists, and debugging. No prior knowledge
of programming is assumed.