Computer Science in Real-Time Interactive Simulation

Computer Science in Real-Time Interactive Simulation

Programme Overview
The Computer Science in Real-time Interactive Simulation programme provides rigorous training in foundational STEM modules that underpin computer science and simulations, and also focusses on deep programming skills that includes high level programming, low level programming, advanced C/C++, data structures, algorithms analysis and three progressive modules in computer graphics. Students will embark on a persistent studio-based software engineering project that spans across every trimester of the study and allows students to continuously apply their module-based knowledge in larger-scale projects, as well as hone essential soft skills in working within multidisciplinary teams. Graduates will be fully industry-ready with deep technical expertise in developing real-time interactive systems.

Curriculum Highlights
Students focus on the following core areas of study:

  • Software Engineering Projects
  • Game Implementation Techniques 
  • Advanced Computer Graphics
  • Machine Learning
  • Artificial Intelligence for Games 
  • Eight-month Integrated Work Study Programme (IWSP)
  • Overseas Immersion Programme (OIP) 

Career Opportunities
Graduates of this programme are prepared to enter the video game industry as

  • Computer Scientist
  • Software Engineer
  • Artificial Intelligence Developer
  • VR/ AR Software Developer
  • Machine Learning Engineer
  • Interactive Mobile Application Programmer
  • Game Engine Developer
  • Gameplay Programmer

Eligibility and Exemption

Diploma holders from any of the five local polytechnics, A level / IB / NUS High School Diploma graduates and equivalent qualifications are welcome to apply. Applicants who hold local diplomas from other local institutions and other qualifications equivalent to Year-12 formal qualifications may be considered for admission to selected programmes on a case-by-case basis.

Subject to approval, diploma applicants may be granted module exemptions, based on the modules taken and minimum grades achieved in their diploma.

A-level Pre-requisites:

  • A pass in one of the following H2 subjects (Mathematics or Physics or Computing); or a pass in H1 Mathematics
  • Obtained passes in at least two H2 subjects and offered either General Paper (GP) or Knowledge & Inquiry (KI) in the same sitting while satisfying Mother Tongue Language (MTL) requirements.

IB Pre-requisites:

  • A pass in one of the following HL subjects (Mathematics or Physics or Computing); or a pass in SL Mathematics
  • Obtained a minimum grade five for at least two HL and one SL subjects and the IB Diploma while satisfying the Mother Tongue Language (MTL) requirements.

MODULE SYNOPSIS

Year 1
CSD1100 Computer Environment

This module provides students with a solid understanding of the fundamental elements on which computers are based. Topics covered include number systems, representation of numbers in computation, basic electricity, electric circuits, digital systems, logic circuits, data representation, digital memory, computer architecture, and operating systems. This knowledge eliminates some of the “mysteries” about hardware and provides students with a well-rounded understanding of computers. The latter stages of the module focus on assembly programming, which enhances the student’s understanding of how the computer works at a fairly low-level.
 

CSD1610 Composition

This module focuses on generating and discussing ideas for composition and engages in all stages of the writing process, with emphasis on the development and application of critical thinking skills. The primary focus of the course is developing the ability to construct, write, and revise argumentative/ persuasive essays. Assignments may also include other types of writing, such as narrative, descriptive, and comparative essays.

CSD1240 Linear Algebra and Geometry

The two main themes throughout the module are vector geometry and linear transformations. Topics from vector geometry include vector arithmetic, dot product, cross product, and representations of lines and planes in three-space. Linear transformations covered include rotations, reflections, shears and projections. Students study the matrix representations of linear transformations along with their derivations. The curriculum also presents affine geometry and affine transformations along with connections to computer graphics. This module also includes a review of relevant algebra and trigonometry concepts.

CSD1120 High-level Programming 1

In presenting the C programming language, this module serves as a foundation for all high-level programming modules and projects. It provides the fundamentals in programming, including control-flows (such as statement grouping, decision making, case selection, procedure iteration, and termination test) and basic data types (such as arrays, structures, and pointers). Additionally, there is an intensive discussion of the lexical, syntax notation, and semantics of the C programming language.
 

CSD1400 Software Engineering Project 1

This class presents an overview of the way the game development industry works and a history of game development. It will expose students to the positions and job responsibilities that each member of a game development team has, along with the industry requirements for concept pitches, design documents and schedules. It will also introduce sprite animation, object motion, and input processing, which students will use in the creation of a game of their own design.

CSD1250 Calculus and Analytic Geometry 1

This module introduces the calculus of functions of a single real variable. The main topics include limits, differentiation, and integration. Limits include the graphical and intuitive computation of limits, algebraic properties of limits, and continuity of functions. Differentiation topics include techniques of differentiation, optimization, and applications to graphing. Integration includes Riemann sums, the definite integral, anti-derivatives, and the Fundamental Theorem of Calculus.

CSD1170 High-level Programming 2

This module presents differences between imperative programming as practised in High-Level Programming I module and object-oriented programming. It also enables students to learn the concepts of data abstraction, inheritance, polymorphism and interface versus implementation. It introduces the challenges of building large-scale programs and how object-oriented programming facilitates it. Students learn the Standard C++ and Standard Template libraries and how to use them effectively in solving problems. Students also learn how to apply module concepts to implement data structures and programs to solve various problems.

CSD1130 Game Implementation Techniques

Game Implementation Techniques presents foundational data structures, algorithms, mathematical concepts and techniques used in the design and development of two-dimensional real-time interactive simulation and game software. Topics covered include event-driven programming, game engine design and architecture, real-time rendering, user interaction, state-machines, basic animation techniques and collision detection.

CSD1650 Interpersonal and Work Communication

This module provides an introduction to interpersonal and professional communication. Particular attention is paid to verbal and nonverbal communication skills, small-group communication, and conflict resolution.

CSD1450 Software Engineering Project 2

This project focuses on the creation of a simple game or simulation. Students will work together on teams of three or four members. All projects must be written entirely in C (C++ is also allowed) and cannot use external libraries or middleware of any kind (except those provided by the instructor). Topics include effective team communication, planning, documentation, debugging, source control, testing, and iterative software development techniques.

Year 2
CSD2200 Calculus and Analytic Geometry 2

This module builds on the introduction to calculus in CSD1250. Topics in integration include applications of the integral in physics and geometry and techniques of integration. The module also covers sequences and series of real numbers, power series and Taylor series, and the calculus of transcendental functions. Further topics may include a basic introduction to concepts in multivariable and vector calculus.
 

CSD2180 Operating Systems

Linux/Unix as implemented on modern PCs. After an overview of what an operating system is and does, we cover the following: organization and design (the kernel and various subsystems), process management (creation and management of processes and threads, including an introduction to multi-threaded programming), inter-process communication, process synchronization (locks, semaphores, and methods to avoid deadlocks), memory management (hardware and process views of memory layout and demand-paged virtual memory), file systems, and security and protection (viruses, worms, and Trojan horses).

CSD2100 Introduction to Computer Graphics

This module is an introduction to Computer Graphics. It covers the algorithms and mathematical fundamentals needed to generate and render 2D and 3D scenes. The topics include the introduction to graphics pipeline, 2D and 3D coordinate systems and their transformations, homogeneous coordinates and perspective calculations, scan-conversion and depth algorithms, and basic clipping and culling techniques.
 

CSD2125 Modern C++ Design Patterns

This module builds on the foundation created in the first two high-level programming modules (CSD1120/CSD1170). It presents advanced topics in the C/C++ programming language in greater detail. Such topics include advanced pointer manipulation, utilizing multi-dimensional arrays, complex declarations, and standard library functions. Advanced C++ topics include function and class templates, operator overloading, multiple inheritances, runtime type information, the Standard Library, and performance issues.

CSD2400 Software Engineering Project 3

This project is divided into two trimesters and focuses on the creation of a simple real-time game or simulation with 2D graphics (3D games are not allowed, unless on special permissions). Students will work together on teams with average of five/six members to implement technical features such as audio effects, music playback, pattern movement, simple artificial intelligence, same-machine multiplayer (networking is not allowed, unless on special permission), particle systems, scrolling, and simple physics. All projects must be written with a core of C++ code and cannot use middleware such as pre-existing physics engines, networking engines, AI, etc. Additional topics may include basic software architecture, essential development practices, fundamentals of team dynamics, and task prioritization methods.

CSD2258 Discrete Mathematics

This module gives an introduction to several mathematical topics of foundational importance in the mathematical and computer sciences. Typically starting with propositional and first order logic, the module considers applications to methods of mathematical proof and reasoning. Further topics include basic set theory, number theory and applications to cryptography, relations, mathematical induction, and basic probability. Other topics may include graph theory, asymptotic analysis, and finite automata.

CSD2300 Motion Dynamics and Lab

This module introduces the various physical laws that describe the motions of objects around us. Students learn to internalize concepts involved with kinematics, Newtonian dynamics, work and energy, momentum, rotational motion and condition for the static equilibrium of rigid bodies and develop keen problem-solving skills in motion dynamics.

CSD2150 Introduction to Real-Time Rendering

This module introduces students to algorithms that are essential to creating photorealistic images in interactive simulations. Topics covered include an overview of modern GPU (graphics processor unit) architecture and the common graphics APIs used, including OpenGL and DirectX. Rendering techniques covered include texturing, illumination models, transparency, shading algorithms, mapping techniques (bump mapping, environment/reflection mapping, etc.), and shadows. Students learn how to implement all algorithms by using vertex and pixel shaders.

CSD2181 Data Structures

The objective of this module is mainly to introduce the classical Abstract Data Types (ADTs) in Computer Science. The ADTs provide the hierarchical views of data organization used in programming. Fundamental data structures and their associated algorithms as well as complexity notation are introduced. Simply Reading about data structures and algorithms and listening to a lecture is insufficient to master and implement these fundamental concepts. Every non-trivial program you write at DigiPen and in the real world will make heavy use of data structures and algorithms and this module enables you to reason about and apply them.

CSD2450 Software Engineering Project 4

In this class, students work to complete and polish the projects they began in CSD2400. Additional topics may include intermediate software architecture, advanced debugging techniques, bug tracking, formal playtesting, game pacing and game balance.

CSD3182 Artificial Intelligence for Games

The objective of this module is to introduce data structures and algorithms related to artificial intelligence applicable in real-time interactive applications. It introduces students to a wide range of concepts and practical algorithms that are commonly used to solve game AI problems. Topics covered include the game AI programmer mindset, AI architecture (state machines, rule-based systems, goal-based systems, trigger systems, smart terrain, scripting, message passing, and debugging AI), movement, pathfinding, emergent behaviour, agent awareness, agent cooperation, terrain analysis, planning, and learning/adaptation.

CSD2160 Computer Networks

This module introduces hierarchical network communication in a distributed computing environment. Topics cover network technologies, architecture, protocols, and security. The curriculum gives specific emphasis to the TCP/IP stack and in making students familiar with writing portable socket-based software. It also discusses some of the unique challenges of networked games and strategies for addressing them.
 

CSD2170 Programming Massively Parallel Processors

This module introduces students to algorithms that are essential to creating photorealistic images in interactive simulations. Topics covered include an overview of modern GPU (graphics processor unit) architecture and the common graphics APIs used, including OpenGL and DirectX. Rendering techniques covered include texturing, illumination models, transparency, shading algorithms, mapping techniques (bump mapping, environment/reflection mapping, etc.), and shadows. Students learn how to implement all algorithms by using vertex and pixel shaders.

CSD2250 Linear Algebra

This module presents the mathematical foundations of linear algebra, including a review of basic matrix algebra and linear systems of equations as well as basics of linear transformations in Euclidean spaces, determinants, and the Gauss-Jordan Algorithm. The more substantial part of the module begins with abstract vector spaces and the study of linear independence and bases. Further topics may include orthogonality, change of basis, general theory of linear transformations, eigenvalues, eigenvectors, as well as applications to least-squares approximations and Fourier transforms, differential equations, and computer graphics.

Year 3
CSD3130 Algorithm Analysis

This module provides students with an introduction to the analysis of algorithms specifically proving their correctness and making a statement about their efficiency. Topics for discussion may include loop invariants, strong mathematical induction and recursion, asymptotic notation, recurrence relations and generating functions. Students examine examples of algorithm analysis from searching and sorting algorithms. Second part of the module concentrates on classification of algorithms and building a strong knowledge base of existing algorithms.

CSD3240 Probability and Statistics

This module is an introduction to basic probability and statistics with an eye toward computer science and artificial intelligence. Basic topics from probability theory include sample spaces, random variables, continuous and discrete probability density functions, mean and variance, expectation, and conditional probability. Basic topics from statistics include binomial, Poisson, chi-square, and normal distributions; confidence intervals; and the Central Limit Theorem. Further topics may include fuzzy sets and fuzzy logic.

CSD3150 Spatial Data Structures

This module deals with the efficient representation and processing of complex 3D scenes in order to avoid bottlenecks in the use of the CPU and the GPU. Specific topics include a variety of spatial data structures (binary space-partitioning trees, octrees, kd-trees, and grid data structures), several object-culling methods (occlusion, viewport, and portal), and finally the construction and uses of bounding volumes and their hierarchies for collision detection and related geometric operations.

CSD3099 Career and Professional Development

This is a capstone module for students to prepare their application materials and learn how to effectively search for an entry-level job in their field. The goal of the course is for each student to have a polished resume, cover letter, business card, and online/web presence by the end of the semester, as well as a search strategy for seeking employment.

CSD3400 Software Engineering Project 5

This module is the first trimester of a two-trimester project that will be continued in CSD3450. It focuses on the creation of a polished, professional-quality, real-time game or simulation, and provides the opportunity to work together on cross-discipline teams of three or more members, implementing the technical features needed for the project. This first trimester focuses on pre-production to ensure the technology, tools, design, art, audio, and team are ready for full production in the following trimester.

CSD3115 Low-level Programming

This module introduces students to modern microprocessor architectures, using the Intel x86 series as case studies, with the intent to showing the practical implications of such knowledge upon programming decisions. Topics include pipelining, superscalar/VLIW machines, register-renaming, out-of-order execution, multi-core architecture, caches, multicore-cache coherency, x86 instruction set architecture, application binary interfaces, Flynn’s taxonomy, Streaming SIMD extensions etc.
 

CSD3185 Machine Learning

The objective of this module is to introduce basics concepts on Machine Learning that are useful for many industrial applications. It introduces students to a wide range of concepts and practical algorithms that are commonly used to pre-process data and extract useful patterns from large amount of data. The topics include early machine learning algorithms such as genetic algorithms, classifier systems, neural network, and various clustering algorithms. It also explores probabilistic algorithms, including Bayesian networks, hidden Markov models, and Monte Carlo methods.

CSD3156 Mobile and Cloud Computing

By facilitating a large variety of transportable human-computer interactions, mobile devices have become an essential and integral part of human life. Cloud computing is a model for enabling on-demand access to a shared pool of configurable computing resources such as servers, storage, networks, and applications as services over the Internet. Many popular mobile applications such as Gmail, Netflix, Facebook and WhatsApp are implemented as cloud applications but accessed from mobile devices. This module provides a practical and application-oriented introduction to implementing cloud computing services that bring the vast data processing and storage abilities of the cloud to mobile devices.

CSD3120 Introduction to Virtual Reality

Virtual reality is a real-time, interactive computer simulation that senses a user’s state and augments sensory feedback information to one or more of the user’s senses so as to provide the user a sense of being immersed in the environment. This module provides a practical and project-based introduction to the concepts, techniques and algorithms to design, develop and implement virtual reality applications. Topics covered include physical principles and technologies for multi-modal input/output interfaces; representation, rendering and display of virtual worlds; interactive techniques for multi-modal interactions; augmented reality; and development tools and frameworks.

CSD3450 Software Engineering Project 6

In this module, students work to complete the projects they began in CSD3400. This second trimester focuses on production to bring the project to the point where the target audience finds it engaging. Furthermore, techniques are explored for creating effective resumes, interviewing, and pursuing internships.

Year 4
CSD4620 Research, Reasoning and Writing

In this composition module, students practice advanced argumentative essay writing with a focus on research, critical analysis of the research, thesis presentation, and defense. During the semester, students write several research essays on various topics using both traditional and new information techniques.
 

CSD4400 Capstone Project

This is a two-trimester module. In the first trimester, the aim of the capstone project is to allow students to undertake a substantial piece of individual work, involving planning, specification, design, execution, evaluation of a complex systems that is related to the theme of Smart Nation and IoT.

In the continuation of the first part of the Capstone Project. The students are required to develop the scope and requirements of the project together with their academic and industry supervisors during IWSP and complete the implementation of the project in their final trimester of study. They will be required to present their project in a short seminar and submit a thesis report describing the results of the project.
 

CSD4901 Integrated Work Study Programme

The Integrated Work Study Programme (IWSP) is uninterrupted 8-month duration (2 trimesters) work placement programme that provides students with unique learning opportunities to achieve the following objectives: (1) applied learning – integration of theory and practice, acquisition of specialist knowledge and development of professional skills, (2) exposure to real-world conditions - appreciation of real-world constraints in respective industry contexts to develop skills of adaptability, creativity and innovation, and (3) smooth transition to jobs - practical experience which shortens work induction period.

The extended period of IWSP, coupled with real work being performed, allow placement organizations to evaluate the suitability of a student as potential employee, in effect making the IWSP equivalent to a job probation period. Students will also have many opportunities to immerse themselves in their placement organization’s business and culture, and decide if this is a good organization to work in.
 

CSD4650 Professional Communication

This module prepares students for the communication challenges that await them in the professional world. Topics covered may include professional networking strategies, career search materials, self-presentation and interview skills, and effective communication across all levels and functions of the workplace.

Campus Location
SIT@SP Building
SIT@SP Building

Singapore Polytechnic
510 Dover Road, Singapore 139660