Computer Science Theory and Core Topics

Traditional computer science theory and core topics are specified by the ACM (Association of Computer Machinery) and this standard curriculum has been widely adopted by most universities. Our programs cover these topics:

Discrete Structures

  • Functions, relations, and sets
  • Basic logic
  • Proof techniques
  • Basics of counting
  • Graphs and trees
  • Discrete probability

Programming Fundamentals

  • Fundamental programming constructs
  • Algorithms and problem-solving
  • Fundamental data structures
  • Recursion
  • Event-driven programming

Algorithms and Complexity

  • Basic algorithmic analysis
  • Algorithmic strategies
  • Fundamental computing algorithms
  • Distributed algorithms
  • Basic computability
  • The complexity classes P and NP
  • Automata theory
  • Advanced algorithmic analysis
  • Cryptographic algorithms
  • Geometric algorithms
  • Parallel algorithms

Architecture and Organization

  • Digital logic and digital systems
  • Machine level representation of data
  • Assembly level machine organization
  • Memory system organization and architecture
  • Interfacing and communication
  • Functional organization
  • Multiprocessing and alternative architectures
  • Performance enhancements
  • Architecture for networks and distributed systems

Operating Systems

  • Overview of operating systems
  • Operating system principles
  • Concurrency
  • Scheduling and dispatch
  • Memory management
  • Device management
  • Security and protection
  • File systems
  • Real-time and embedded systems
  • Fault tolerance
  • System performance evaluation
  • Scripting

Net-Centric Computing

  • Introduction to net-centric computing
  • Communication and networking
  • Network security
  • The web as an example of client-server computing
  • Building web applications
  • Network management
  • Compression and decompression
  • Multimedia data technologies
  • Wireless and mobile computing

Programming Languages

  • Overview of programming languages
  • Virtual machines
  • Introduction to language translation
  • Declarations and types
  • Abstraction mechanisms
  • Object-oriented programming
  • Functional programming
  • Language translation systems
  • Type systems
  • Programming language semantics
  • Programming language design

Human-Computer Interaction

  • Foundations of human-computer interaction
  • Building a simple graphical user interface
  • Human-centered software evaluation
  • Human-centered software development
  • Graphical user-interface design
  • Graphical user-interface programming
  • HCI aspects of multimedia systems
  • HCI aspects of collaboration and communication

Graphics and Visual Computing

  • Fundamental techniques in graphics
  • Graphic systems
  • Graphic communication
  • Geometric modeling
  • Basic rendering
  • Advanced rendering
  • Advanced techniques
  • Computer animation
  • Visualization
  • Virtual reality
  • Computer vision

Intelligent Systems

  • Fundamental issues in intelligent systems
  • Search and constraint satisfaction
  • Knowledge representation and reasoning
  • Advanced search
  • Advanced knowledge representation and reasoning
  • Agents
  • Natural language processing
  • Machine learning and neural networks
  • AI planning systems
  • Robotics

Information Management

  • Information models and systems
  • Database systems
  • Data modeling
  • Relational databases
  • Database query languages
  • Relational database design
  • Transaction processing
  • Distributed databases
  • Physical database design
  • Data mining
  • Information storage and retrieval
  • Hypertext and hypermedia
  • Multimedia information and systems
  • Digital libraries

Social and Professional Issues

  • History of computing
  • Social context of computing
  • Methods and tools of analysis
  • Professional and ethical responsibilities
  • Risks and liabilities of computer systems
  • Intellectual property
  • Privacy and civil liberties
  • Computer crime
  • Economic issues in computing
  • Philosophical frameworks

Software Engineering

  • Software design
  • Using APIs
  • Software tools and environments
  • Software processes
  • Software requirements and specifications
  • Software validation
  • Software evolution
  • Software project management
  • Component-based computing
  • Formal methods
  • Software reliability
  • Specialized systems development

Computational Science

  • Numerical analysis
  • Operations research
  • Modeling and simulation
  • High-performance computing

» N E X T