The national implementation of the K-12 Basic Education Program in the Philippines has integrated foundation courses of higher education programs in the senior high school core courses. Thus, there is a need to streamline the curriculum of the BS Computer Science program to avoid duplication of courses and to keep the program responsive to the needs of the industry. The revision includes new General Education courses which will enable the students to have a wider breadth of knowledge and skills for holistic development. Additional foundation and core courses were integrated to keep pace with the developments of internationally recognized computing curricula recommendations for undergraduate degree programs in Computer Science. Lastly, additional elective and specialization courses were included in the curriculum to provide students with the flexibility to work across various disciplines and multiple platforms.

The BS Computer Science Curriculum is geared towards producing graduates who shall:

- contribute to the nation’s development through the professional practice of Computer Science in the academe, research, industry, government, and other institutions;
- engage in research and development of Computer Science as a discipline for the national and international advancement of the field;
- participate in the multi-disciplinary research and collaborative endeavors;
- pursue graduate studies in the field of Computer Science and related disciplines; and
- uphold the University’s values of honor and excellence.

### BS Computer Science Flowchart (2018)

### BSCS Course Descriptions

CMSC 2**. **Introduction to the Internet** (3 units). Tools and services of the Internet, Internet protocols, search engines, file transfer protocol (FTP), email, list servers and hypertext markup language (HTML) programming (1,2). Prerequisite: None.**

CMSC 11. Introduction to Computer Science** (3 units). Introduction to the major areas of computer science; software systems and methodology; computer theory; computer organization and architecture. Students learn to write programs using high-level block-structured programming language (1,2). Prerequisite: MATH 11 or MATH 17**

CMSC 12. Foundations of Computer Science** (3 units). An overview of the major areas of computer science.(1,2,M). Prerequisite: None.**

CMSC 21. Fundamentals of Programming** (3 units). Introduction to computer programming using a procedural high-level language. Program design, testing and debugging. (1,2,M) Prerequisite: CMSC 12.\**

CMSC 22. Object-Oriented Programming** (3 units) Objects, design and implementation of object-oriented programs (1,2) Prerequisite: CMSC 12.**

CMSC 23. Mobile Computing** (3 units). Methods and techniques for developing mobile applications. (1,2)Prerequisite: CMSC 22.**

CMSC 56. Discrete Mathematical Structures in Computer Science I** (3 units). Principles of logic, set theory, relations and functions, Boolean algebra and linear algebra. (1,2) Prerequisite: None.**

CMSC 57. Discrete Mathematical Structures in Computer Science II** (3 units). Principles of combinatorics, probability, algebraic systems and graph theory. (2,M) Prerequisite: CMSC 56.**

CMSC 100. Web Programming** (3 units). Design and implementation of web applications (1,2) Prerequisite: CMSC22.**

CMSC 123. Data Structures** (3 units). Abstract data types and implementation; lists, stacks, queues, trees, mappings, sets and graphs, searching and sorting techniques; dynamic storage management. (1,2) Prerequisites:CMSC 21 & CMSC 57 or COI.**

CMSC 124. Design and Implementation of Programming Languages** (3 units). Study of the fundamental concepts in the design and implementation of current high-level programming languages; syntax and translation; language definition structures; elementary and structured data types; abstraction mechanisms; sequence and data control; run time considerations. (1) Prerequisite: CMSC 123 or COI.**

CMSC 125. Operating Systems** (3 units). Processor management, memory management, file and disk management, resource management, concurrent processes, networks and distributed systems. (1) Prerequisite: CMSC 123 or COI.**

CMSC 127. File Processing and Database Systems **(3 units). Data models: relational, network and hierarchical models; Database management system, data definition and manipulation language; Data security, integrity, synchronization, protection and recovery; Principal database systems and query languages.(1,2) Prerequisite: CMSC 22 or COI.**

CMSC 128. Introduction to Software Engineering** (3 units). Software life cycle from the requirement specification and design phases through the construction of actual software; topics include planning a software project, cost estimation, software design, implementation and software maintenance (2) Prerequisite: CMSC 123 or COI.**

CMSC 129. Principles of Compiler Design** (3 units). Fundamental concepts in the design and implementation of compilers: lexical analysis, syntax analysis, intermediate code generation, code generation and optimization. (Elective, 2) Prerequisite: CMSC 124.**

CMSC 130. Logic Design and Digital Computer Circuits** (3 units). Data representation and computer arithmetic; logic functions and equations; description, analysis, and design of combinatorial and sequential circuits; functional properties of digital integrated circuits. (1) Prerequisite: CMSC 57.**

CMSC 131. Introduction to Computer Organization and Machine-Level Programming** (3 units). An introduction to computer organization and interfaces between hardware and software; microcomputer systems; basic compiler organization, interfacing, interrupt mechanisms; assembly language programming; Machine vs. Assembly vs. High-level language, data structure representation, program control implementations, subroutines, parameter passing, recursion, direct video graphics, serial port communications. (2)Prerequisite: CMSC 21 or COI.**

CMSC 132. Computer Architecture** (3 units). Advanced topics in computer systems organization from a designer’s point of view: multiprocessing, pipelining, array processors, associative processors; Microprogramming, techniques for increasing primary memory bandwidths; Modularization, interleaving, access path widening, cache and associative memories; Virtual memory; Bus structures; Multiprogramming and time-sharing organizations; Network principles and protocols; Distributed resources. (1) Prerequisite: CMSC 131.**

CMSC 137. Data Communications and Networking** (3 units). Basic principles of data communications; design issues and protocols in the layers of data network; networks for various applications. (2) Prerequisite: CMSC 125.**

CMSC 141. Automata and Language Theory **(3 units). Finite automata and regular languages; push-down automata and context-free languages. Turing machines and enumerable sets: linear-bounded automata and context free languages, compatibility and the halting problem; undecidable problems; recursive and recursively-enumerable languages and computational complexity. (1,2) Prerequisite: CMSC 123 or COI.**

CMSC 142. Design and Analysis of Algorithms** (3 units). Algorithm design techniques; use of data structures, divide and conquer, dynamic, programming, greedy techniques, local and global search, complexity analysis of algorithms, asymptotic analysis, worst case and average case, recurrences, lower bounds. NP-completeness. (1,2) Prerequisite CMSC 123 or COI.**

CMSC 150. Numerical and Symbolic Computation **(3 units). Computational problem solving; sources of errors in computation; iterative approximation methods and symbolic algebra; mathematical software libraries and symbolic manipulation packages. (1) Prerequisite: MATH 27 or MATH 36, and CMSC 21, or COI.**

CMSC 161. Interactive Computer Graphics** (3 units). Graphics systems software and hardware, 2D drawing algorithms, geometrical transformations, surface modeling, 3D viewing, visible surface determination algorithms, reflection and illumination models, shading models for polygons, color theory, ray tracing, animation. Students write their 3D rendering engine. (Elective, 2) Prerequisite: CMSC 123 or COI.**

CMSC 165. Digital Image Processing **(3 units). Methods for acquiring, creating, manipulating, enhancing, and analyzing digital images. (Elective,1) Prerequisite: CMSC 123 or COI.**

CMSC 170. Introduction to Artificial Intelligence **(3 units). Basic principles and applications of artificial intelligence: knowledge representation, natural language processing, pattern recognition and expert systems. (1) Prerequisite: CMSC 123.**

CMSC 172. Robot Modeling **(3 units). Robotics manipulators and their characteristics; conversion from joint space to real world coordinates; inverse kinematics; workspace analysis; differential motion. (Elective,2) Prerequisite: CMSC 123.**

CMSC 173. Human-Computer Interaction** (3 units). Theory, design methodologies, and programming practices in Human-Computer Interaction. (1,2) Prerequisites: CMSC 123 and STAT 101.**

CMSC 180. Introduction to Parallel Computing** (3 units) Parallel computational models, machine architectures, performance models, algorithms, and programming. (2) Prerequisite: CMSC 132.**

CMSC 190. Special Problem** (3 units) To be enrolled twice; once as one-unit course to prepare for a proposal, then as a two-unit course to implement the proposal. (1,2,S) Prerequisite: COI.**

CMSC 191. Special Topics** (3 units). (Elective,1,2) Prerequisite: CMSC 123**

CMSC 198. Practicum **(3 units). (M) Prerequisite: COI.**

CMSC 199. Undergraduate Seminar** (1 unit). (1,2) Prerequisite: COI.**

CMSC 200. Undergraduate Thesis** (6 units). (1,2,S) Prerequisite: COI. **

**Semesters offered: 1 – 1st semester, 2 – 2nd semester, M – midyear**