Georgia Institute of TechnologyWebsiteAcademic Catalog
College of ComputingDepartment Website
Thread Degree in Systems & Architecturesource 1source 2
CS Courses
- Introduction to Object Oriented ProgrammingCS 1331 (3)introCS 1331: Introduction to Object Oriented Programming
Introduction to techniques and methods of object-oriented programming such an encapsulation, inheritance, and polymorphism. Emphasis on software development and individual programming skills.
- Introduction to Discrete Mathematics for Computer ScienceorCS 2050 (3)mathCS 2050: Introduction to Discrete Mathematics for Computer Science
Proof methods, strategy, correctness of algorithms over discrete structures. Induction and recursion. Complexity and order of growth. Number theoretic principles and algorithms. Counting and computability. Credit not allowed for both CS 2050 and CS 2051.
Honors - Induction to Discrete Mathematics for Computer ScienceCS 2051 (3)mathCS 2051: Honors - Induction to Discrete Mathematics for Computer ScienceProof methods, strategy, correctness of algorithms over discrete structures. Induction and recursion. Complexity and order of growth. Number theoretic principles and algorithms. Counting and computability. Credit not allowed for both CS 2051 and CS 2050.
- orCompilers, Interpreters, and Program AnalyzersCS 4240 (3)plsCS 4240: Compilers, Interpreters, and Program Analyzers
Study of techniques for the design and implementation of compilers, interpreters, and program analyzers, with consideration of the particular characteristics of widely used programming languages.
- or
- Advanced Operating SystemsorCS 4210 (3)sysCS 4210: Advanced Operating Systems
Operating system abstractions and their implementations, multi-threading, efficient inter-address communication, high-level synchronization, introduction to multi-processor and distributed operating systems, real-time systems. Credit is not awarded for both CS 4210 and CS 6210.
Programming Embedded SystemsorCS 4220 (3)sysCS 4220: Programming Embedded SystemsDesign principles, programming techniques, and case studies of embedded real-time systems. Interface techniques and devices. Representations and reasoning about physical processes.Credit not awarded for both CS 4220 and CS 6235.
Advanced Computer OrganizationCS 4290 (3)sysCS 4290: Advanced Computer OrganizationTopics concerning the hardware design of computer systems. Advanced techniques in high-performance pipelined central processing units. Memory and I/O systems. Parallel processors including shared-memory multiprocessors and cluster computers.
- 4 units from
Advanced Operating SystemsCS 4210 (3)sysCS 4210: Advanced Operating SystemsOperating system abstractions and their implementations, multi-threading, efficient inter-address communication, high-level synchronization, introduction to multi-processor and distributed operating systems, real-time systems. Credit is not awarded for both CS 4210 and CS 6210.
Programming Embedded SystemsCS 4220 (3)sysCS 4220: Programming Embedded SystemsDesign principles, programming techniques, and case studies of embedded real-time systems. Interface techniques and devices. Representations and reasoning about physical processes.Credit not awarded for both CS 4220 and CS 6235.
Introduction to Information SecurityCS 4235 (3)sysCS 4235: Introduction to Information SecurityTerms/concepts, threats, controls; problem definition; comprehensive information security model; security for operating systems, databases, network/distributed systems; administering security; legal/ethical/policy issues. Credit not allowed for both CS 4235 and CS 6035.
Computer and Network SecurityCS 4237 (3)sysCS 4237: Computer and Network SecurityFundamental concepts and principles of computer security, operating system and database security, secret key and public key cryptographic algorithms, hash functions, authentication, firewalls and intrusion detection systems, IPSec ad VPN, and wireless security.
Computer Systems SecurityCS 4238 (3)sysCS 4238: Computer Systems SecurityTrusted computing base, hardware support for protection and virtualization, authentication, access control and authorization, discretionary and mandatory security policies, secure kernel design, and secure databases. Students cannot receive credit for CS 4238 and CS 6238.
Compilers, Interpreters, and Program AnalyzersCS 4240 (3)plsCS 4240: Compilers, Interpreters, and Program AnalyzersStudy of techniques for the design and implementation of compilers, interpreters, and program analyzers, with consideration of the particular characteristics of widely used programming languages.
Advanced Computer OrganizationCS 4290 (3)sysCS 4290: Advanced Computer OrganizationTopics concerning the hardware design of computer systems. Advanced techniques in high-performance pipelined central processing units. Memory and I/O systems. Parallel processors including shared-memory multiprocessors and cluster computers.
Programming LanguagesCS 4392 (3)plsCS 4392: Programming LanguagesFundamentals of programming language design and theory. Topics include formal semantics and type systems for imperative, functional, and parallel languages; lambda calculus and its variants; the Curry-Howard Correspondence; techniques for proving language properties and verifying program specifications.
Engineering Courses
Early Preparation
- Programming and Design
- Basic Discrete structures: set theory, graph theory
- Algorithms and Data Structures
- Basic Computer System Organization: Hardware and Software Layers
- Basic Communication networks
Knowledge Goals
- Programming Abstractions/Paradigms
- Programming Language Design
- Compiler Construction and Language Implementation
- Architecture Components and Design Techniques (e.g., pipelining, memory hierarchies)
- Architecture Performance Measurement and Evaluation
- Operating Systems and Resource Management Concepts
- Concepts of Concurrency, Parallelism and Distribution
- Modeling and Design of Complex Software Systems
- Understanding and Controlling System Properties (such as reliability, performance, correctness)
Skill Outcomes
- Ability to write simple tools based on lexer/parser technology
- Ability to write simple code generator/assembler
- Ability to design simple pipelined machines based on Von Neumann architecture
- Ability to implement simple operating system kernels that deal with memory management, process scheduling, synchronization, thread management, etc.
- Ability to quantitatively analyze systems with respect to different characteristics such as performance, power, reliability etc.
- Design and implement small languages/language extension in different paradigms
- Ability to design and evaluate software systems that rely on parallelism, concurrency or distribution
- Ability to design ubiquitous systems that rely on distributed embedded devices
- Ability to verify system properties based on specification