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 |