Bachelor of Science in Computer Science

The Department of Computer Science offers one program for undergraduates: the Bachelor of Science in Computer Science (BSCS) program.

Latest revision - 2018

The BSCS curriculum was last revised in 2018 in response to the nation-wide shift to a K-12 education system. With 148 units taken over four years (including one required mid-year term - for internship), the 2018 curriculum takes into account the latest developments and trends in the field of Computer Science, feedback from the industry, new competencies from students produced by the K-12 primary/secondary school system (with particular focus on graduates of the Science, Technology, Engineering and Mathematics (STEM) strand), and recommendations from professional bodies such as the Association of Computing Machinery (through its Curriculum Guidelines for Undergraduate Degree Programs in Computer Science, 2013). 

Curriculum design principle

The 2018 curriculum is designed to be fundamentals-driven, emphasizing core principles and competencies that would enable the students (and eventual graduates) to adapt and learn new skills in an ever-changing technological and professional landscape. As such, very few, if any, of the courses in the curriculum cater to a specific technology (Java, Cisco, etc.) or skill (object-oriented programming, web programming, drone programming, etc.). The students would learn these technologies/skills, but they would do so in the context of these technologies/skills being used in learning more fundamental courses (e.g., object oriented programming through the programming language course, mobile/web programming through the software engineering course), most of which are reinforced with laboratory units to foster learning and experimentation ("learning by doing").

Specialization

The BSCS degree has no explicit specialization which appears in the diploma or transcript (e.g. Bachelor of Science in Computer Science, Major in Network Technologies). This is partly in observance of the general principle of making the program fundamentals-driven, and partly to encourage the students to take charge of their own learning through electives and additional courses they may take in the University. Nevertheless, the students do end up having a de-facto specialization of sorts, since membership in one of the Department's eight research laboratories/groups is required for taking up CS 198/199/200 (Special Project I/Special Project II/Undergraduate Thesis). The year-long project undertaken by the student under one of the research laboratories, combined with electives and additional courses, serve as the specialization mechanisms of the curriculum.   

Curriculum Checklist

Last Updated: May 16, 2018

Code Title Description
CS 171 Topics in Theoretical Computer Science Prereq: COI; may be taken twice, topic to be indicated for record purposes.
CS 173 Topics in Software Technology Prereq: COI; may be taken twice, topic to be indicated for record purposes.
CS 174 Topics in Computer Systems Prereq: COI; may be taken twice, topic to be indicated for record purposes.
CS 175 Topics in Computational Science Prereq: COI; may be taken twice, topic to be indicated for record purposes.
CS 176 Topics in Intelligent Systems Prereq: COI; may be taken twice, topic to be indicated for record purposes.

Year 1

First Semester

Code Title Description
CS 10 Introduction to Computing History of computing, parts of a computer, data storage in a computer, trends and issues in computing.
CS 11 Computer Programming I Basic Programming, Programming Constructs, Programming Logic.
CS 30 Discrete Mathematics for Computer Science I Discrete structures and their applications to Computer Science I, Logic and Methods of Proof.

Second Semester

Code Title Description
CS 12 Computer Programming II Abstract data types: Advanced programming techniques: Exception handling. Documentation. API programming
CS 31 Discrete Mathematics for Computer Science II Discrete structures and their applications to Computer Science II, Introduction to Counting Theory, Graph Theory and Discrete Probability

Year 2

First Semester

Code Title Description
CS 20 Digital Electronics and Circuits Basic electronics, digital logic design, physical/embedded computing (Prereq: CS 12)
CS 32 Discrete Mathematics for Computer Science I Introduction to algorithm design and analysis, Linear data structures and their applications; Sorting Algorithms and Randomized Algorithms; Algorithm Analysis (Prereq: CS 12, CS 31)

Second Semester

Code Title Description
CS 136 Elementary Numerical Computing I Elementary differential equations, introduction to numerical analysis, root finding, collocation method.
CS 21 Computer Organization and Architecture Computer Organization, Computer Architecture, Assembly Language Programming (Prereq: CS 20)
CS 33 Discrete Mathematics for Computer Science II Trees, graphs, algorithms on graphs, generalized lists, randomized algorithms, and probabilistic analysis.

Year 3

First Semester

Code Title Description
CS 138 Elementary Numerical Computing II Numerical differentiation and integration, partial differential equations, numerical linear algebra
CS 140 Operating Systems Operating system concepts; virtualization and multiprocessing, issues and considerations in designing and implementing common features of operating systems; virtual machines and hypervisors; introduction to real-time operating systems, and operating syste
CS 150 Programming Languages Survey of Programming Languages: History and overview of programming languages, Programming paradigms: imperative, functional, object-oriented, logic, Type systems, Declaration and modularity, Introduction to syntax and semantics
CS 165 Database Systems Relational database concepts: Entity Relation modeling, relational model, relational algebra, relational database design and normalization, structured query language, query optimization, File management, Storage and Indexing, ...
CS 191 Software Engineering I Principles of Software Engineering, Software Project Management, Requirements Engineering, Software Analysis and Design Patterns, Software Quality Assurance, Software Testing

Second Semester

Code Title Description
CS 145 Computer Networks Network models and layers, protocol stacks, networks performance analysis, packet analysis, computer networks security, overview of advanced networking technologies
CS 153 Introduction to Computer Security Computer security models and protocols. Security issues. Cryptographic algorithms and digital signatures. Risk Assessment
CS 180 Artificial Intelligence Fundamental principles of artificial intelligence. Search methods. Knowledge representation and reasoning. Agents. Machine learning and neural networks. Current research applications
CS 192 Software Engineering II Software Implementation and Maintenance, Integration Strategies, and Security Issues.
CS 194 Undergraduate Research Seminar Prereq: Junior standing. 1u. (1hr seminar)

Year 4

First Semester

Code Title Description
CS 133 Automata Theory and Computability Alphabet, words, languages and algorithmic problems. Finite automata and hierarchy of languages. Turing machines. Tractable and intractable problems. Uncomputable functions. The halting problem.
CS 198 Special Problems I Prereq: Senior standing (1hr lec, 6hr lab)

Second Semester

Code Title Description
CS 132 Introduction to Data Science Big data analytics, statistical models, Bayesian methods, Markov chains.
CS 155 Compiler Construction Compiler phases, scanners and parsers, semantic analysis and type checking, syntax directed translation, function and procedure calls and runtime organization, register allocation and instruction selection, ...
CS 196 Seminar on Ethical and Professional Issues in Computing Prereq: Senior standing. 1u. (1hr seminar)
CS 199 Special Problems II
CS 200 Thesis