The Software Technology program prepares students to become mature software engineers and researchers. The program trains students in the discipline of software engineering, focusing on the design of efficient, reliable, and quality software products. ST students are capable of doing research. Early on in their academic life, students are encouraged to explore their research interests and discover innovative technology that will help shape the future of Computer Science Research. The program provides the necessary background for students to pursue graduate studies.
At the end of the 3rd year, ST students will begin developing their thesis project. Students in a group of four conceptualize and develop complex software system, in which they will defend at the end of the 4th year.
The quality of the student's thesis has met and sometimes exceeded the standards of the local computing industry. Many organizations have even expressed commendation for the students' thesis. In June 1998, four ST students entered their thesis project in the DOST-sponsored Search for Product Excellence in Information Technology. The group bagged the first prize, taking home a total of one million pesos.
In the field of artificial intelligence, several thesis projects involving strategic games have been developed. For instance, GenWars is an undergraduate thesis project that is similar to existing strategy games like Warcraft, Command and Conquer, and Red Alert. However, in GenWars, different characteristics, such as life, stamina, and fighting skills, are used as basis for overall strength. It also simulates psychological characteristics such as obedience, camaraderie, wisdom, bravery, and hiding abilities. The sequence is dependent on game situations and is not predictable or periodic like in the usual strategy games.
Introduction to 3D Computer Graphics and Animation (3DMODEL)
3 units
This course will discuss introductory topics on 3D computer graphics including modeling, material properties, lights, cameras, animation and rendering.
Advanced Database (ADVANDB)
3 units
This course is about major advanced concepts in the field of databases. Being an advanced course, it will involve a considerable amount of research work as embodied by the projects required to complete the course.
Advanced Operating Systems (ADVANOS)
3 units
This is an advanced course in Operating Systems. It covers advanced concepts such as concurrent programming, operating system design and implementation issues, and distributed operating systems.
Advanced Software Engineering (ADVANSE)
3 units
As C++ inventor Bjarne Stroustrup says, our civilization runs on software. Because individuals, organizations, and nations today depend increasingly on software, it would do well for future software engineers and IT professionals to be familiar with various practices and methods, both plan-driven as well as agile, that are useful in the production and delivery of quality, timely, and cost-effective software products. This 3.0-unit course will introduce students to the practices of a full spectrum of software development approaches and methods, from the more plan-driven, documentation-intensive approaches of PSP, TSP, and CMMI, to the more agile methods of XP and Scrum.
Algorithm Complexity (ALGOCOM)
3 units
This course covers the design and analysis of different algorithms under various design principles and techniques making use of different data structures.
Computer Architecture and Organization (ARCHORG)
3 units
This course provides an overview of Instruction Set Architecture through assembly language programming and the interaction between basic computer system components, namely the CPU, Memory, and I/O.
Basic Computer Concepts (BASICON)
3 units
This course provides an overview of computers, number systems, data types and representations, digital logic systems, assembly and machine language, compilers and translators, operating systems, internetworking, human computer interactions, and intelligent systems
Computer Programming in Assembly Language (COMPASM)
3 units
This is a lecture course on Assembly language programming and the supplementary introduction on interfacing assembly code with C language programs.
Introduction to Computer Programming 1 (COMPRO1)
3 units
This course covers the fundamentals of logic formulation and computer programming using the C programming language. It serves as a foundation for future courses that the students will encounter throughout the Computer Science program. This course is coupled with a lab component.
Advanced C Programming (COMPRO2)
3 units
This advanced course for computer programming in C covers the representation and manipulation of C data structures. This course, like COMPRO1, serves as a foundation for future courses that the students will encounter throughout the Computer Science program. This course is coupled with a lab component.
Computer Organization (COMORGA)
3 units
This course covers issues of CPU, Implementation of arithmetic circuits, discussion of the different algorithms used by input/output peripherals, design and implementation of memory systems and storage devices.
Compiler Theory (COMPILE)
3 units
This course introduces the theories, formal techniques, design, and implementation considerations in the construction of interpreters, compilers, and language translators in general.
Introduction to Cryptography (CRYPTOG)
3 units
A one-term course that outlines the different schemes involved in making communication systems as well as special purpose systems secure. The course is divided into five parts ranging from the mathematical background of the available algorithms up to real world applications. Also covered are the legal and political issues governing the research, development and implementation of the cryptographic schemes.
Introduction to Data Structure and Algorithm (DASALGO)
3 units
This is a one-term introductory course in Data Structures and Algorithms. Topics include, but not limited to: representation and operations on linear and non-linear data structures (arrays, lists, stacks, queues, graphs, trees, heaps), applications of data structures, types of file organizations, hashing, and analysis of algorithms.
Digital Design (DIGIDES)
3 units
This course provides an overview of the principles underlying number systems and representation, logic gates, Boolean algebra, simplification of Boolean functions, and basic operation of combinational and sequential logic circuits.
Discrete Structures (DISCTRU)
3 units
This is a one-term introductory course in Discrete Mathematics. Topics include, but not limited to: propositional and predicate logic, set theory, sequences, summations, matrices, relations and functions, integers and algorithms, proof rules and techniques, mathematical reasoning and induction, recurrences.
Distributed Computing (DISTCOM)
3 units
This is an introductory course to Distributed Computing. It introduces students to concurrent/parallel programming and synchronization problems to effectively design and implement applications for multi-core systems. This course will also give an introductory to network and socket programming and later introduce students to different design and implementation of Distributed System and be able to design one on their own.
Introduction to Distributed Artificial Intelligence (DISTRAI)
3 units
This course provides advanced discussions on the area of artificial intelligence (AI), specifically, on the basic concepts and approaches in distributed artificial intelligence (DAI).
Empathic Computing (EMPATHY)
3 units
EMPATHY presents an emerging, forefront research area of empathic computing. It covers a wide-breadth of computer science disciplines, including digital signal processing, affective user modeling, ambient intelligence, sensor-rich and ubiquitous computing, and adaptive user interfaces, utilizing, but not limited to machine and statistical learning as tools for problem solving.
Game Development (GAMEDEV)
3 units
Development of software for interactive media and computer games is a growing industry. This course focuses on guiding students learn the different techniques and technologies used for programming interactive games and virtual reality simulations. Students will use the knowledge in developing their own 2D or 3D game using the C/C++ programming language. The course focuses primarily on programming aspects including event loops and execution threads, rendering and animation in 3D, terrain/background representation, polygonal models, texturing, collision detection and physically-based modeling, game Artificial Intelligence, and multi-user games and networking.
Introduction to Computer Graphics (GRAPHIX)
3 units
This course will discuss introductory topics on computer graphics including modeling, viewing, projection, and viewport transformations; simple illumination models, and parametric curves/surfaces.
Introduction to Artificial Intelligence (INTROAI)
3 units
This course introduces the CS-ST major to fundamental concepts, principles, and techniques in search-based problem solving, machine learning, and natural language processing, and in the representation of the knowledge needed to perform these tasks.
Introduction to Databases (INTRODB)
3 units
The course covers the basic theories behind databases, data models and database analysis and design. The course will tackle different data models but will concentrate mainly on relational databases, being the most commonly used today. The course introduces learners to concepts on conceptual design of databases using the concepts of the Entity-Relationship (ER) model and normalization, relational model, relational database design and database query languages.
Introduction to Discrete Mathematical Structures (INTRODS)
3 units
This is a one term introductory course in Discrete Mathematics. Topics include, but is not limited to: prepositional and predicate logic, elementary set theory, proof rules and program correctness, mathematical reasoning and counting principles.
Introduction to Operating Systems (INTROOS)
3 units
This is an introductory course in Operating Systems. It includes basic concepts, architectures, components and theories that serve as bases for the design of classical and modern operating systems. All aspects of basic operating system design will be covered in varying degrees of detail. Topics include components of modern operating systems, concurrent programming and implementation of processes, scheduling algorithms, and memory management.
Introduction to Software Engineering (INTROSE)
3 units
This course provides an overview of software engineering as a discipline concerned with the application of theory, knowledge, and practice for effectively and efficiently building software systems. It introduces the students to the fundamental principles and methodologies of software engineering. It focuses on the concepts and principles of software requirements engineering, its tools, techniques, and methods for modeling software systems. Various approaches to requirements analysis and review activities are examined.
Mobile Computing (MOBICOM)
3 units
Mobile computing is fast becoming the next growth area for the IT industry. This is mainly due to the fact that mobile devices such as mobile phones, and handheld computers have become more and more powerful and are now able to take on serious work related tasks outside of simply scheduling of activities. In this course, we will look into the technical capabilities and challenges of developing for such a platform for practical usage in the IT industry. The course would also look into ways of integrating such devices into the industry supply chain and the issues it raises.
Modeling, Simulation and Statistics (MODESTA)
3 units
This course covers simulation, which refers to a broad collection of methods to mimic the behavior of real systems. The main focus of this course is on building logical or mathematical models of systems and analyzing these models. Different types of simulation models such as Static, Dynamic, Continuous, Discrete, Deterministic and Stochastic models are discussed. This course also covers mathematical preliminaries to simulation such as pseudo-random number generation and an introduction to probability and statistics, which provide essential tools for conducting meaningful simulation.
Network (NETWORK)
3 units
This course introduces the student to the basic concepts of computer networking. The seven layered ISO-OSI reference model for computer networks, using TCP/IP and other current networking standards as an example.
New Languages and Tools for Software Technology (NLAN-ST)
3 units
This course provides an overview of web application development as a discipline concerned with the implementation of theory, application of knowledge, and realization of practice. It introduces the students to the principles and processes of web-based systems. It focuses on the analysis of needs of an online application and the tools available to answer these needs. This course also focuses on the different technologies used in the design of web-based systems. It includes architectural and structural design, with an emphasis on the request-response paradigm, server configuration, and project deployment. A range of topics integral to the analysis and design of an online software system will be introduced in this course. Students gain experience about web-site administration through group projects and class exercises. In addition to materials on web application development, this course also includes discussion on correct interface design and web application security issues.
Object-oriented Programming using Java (OBJECTP)
3 units
This course provides the students with the fundamental understanding of object-oriented technology. It also introduces the different concepts that are commonly associated with object-oriented programming such as threading, event-driven programming, etc. using Java as the programming language.
Introduction to Operating Systems (OPERSYS)
3 units
This is an introductory course to operating system design and implementation. This course will cover basic algorithms and procedures to CPU scheduling and memory management. This course will also introduce students to basic concepts of writing concurrent processes and basic techniques to synchronize processes.
Software Technology Practicum (PRCST-1)
1 unit
On-the-job training course during the summer period of the junior year.
Probability and Statistics (PROBSTA)
3 units
An introductory course on the basic concepts and principles of descriptive and inferential statistics with applications to the field of computer science. Topics include random variables, probability, probability distributions, moment-generating functions, descpritive measures of data, sampling theory, estimation and hypothesis testing.
Software Technology Special Elective 1 to 3 (SPELEC1 to 3)
3 units each
This course covers Special course under CCS; choice of electives vary such as technopreneurship, interactive storytelling, business management, professional software development, foreign languages, and introduction to accounting.
Software Technology Elective 1 to 5 (STELEC1 to 5)
3 units each
Various courses allowing the students to specialize in a particular field of interest connected with software technology; choices of electives vary such as intelligent systems track, games development track, security and pattern recognition track, software engineering track, mobile computing, network administration and management, multimedia and information retrieval, and design patterns.
Project Management (STPRJMA)
3 units
This course is designed for Software Technology students to have a better understanding of project management. The students will be trained to be better project managers. They will do an actual project and define its scope, cost, and the time required to accomplish it using MS Project. They will also be given cases to analyze and evaluate. Discussions and readings would cover the basic definitions and concepts in project management and its knowledge areas such as project integration management, scope management, time management, cost management, quality management, human resource management, communication management, risk management, and procurement management.
Software Technology Research Methods (STRESME)
3 units
A course on methods of research where students learn the steps on how to do a research project; a thesis proposal should be produced at the end of the course.
Automata Theory, Formal Languages and Computational Complexity (THEOCOM)
3 units
This course concentrates on the theoretical aspect of Computer Science, which has evolved from three disciplines: mathematics, engineering and linguistics.
Thesis in Software Technology 1 (THSST-1)
2 units
The undergraduate thesis is a non-classroom learning environment in which students may apply the skills, methods, and theories learned throughout their stay in the College of Computer Studies. THSST-1 involves the following activities: (a) search and review of related literature. (b) investigation of existing solutions to the identified problem(s) in STTHESO. (c) evaluation of existing solutions. (d) application of methods and theories in the design of a solution to the problem(s).
Thesis in Software Technology 2 (THSST-2)
2 units
Entry into the THSST-2 stage requires a successful completion of all THSST-1 requirements and prerequisite courses as specified in the appropriate ST flowchart. This stage involves the implementation of major system functions in the target programming language and/or environment. The components are expected to perform the following activities: (a) development and implementation of the solution identified in THSST-1. (b) documentation of development and implementation issues. (c) regular consultation with the thesis adviser. (d) submission of a 6-page technical paper to be reviewed by the panelists and if accepted, participation in a public presentation in a duly organized symposium or congress by the College &/or University, or local/national conferences.
Thesis in Software Technology 3 (THSST-3)
2 units
During this stage, the proponents perform the following activities: (a) development of minor system functions (i.e online help, system enhancements). (b) system testing and analysis of test results. (c) documentation of testing activities and test results. (d) finalizing of the thesis deliverables (i.e. main document, technical manual, user’s manual, software). (e) preparation for the thesis defense.
Web Application Development (WEBDEVE)
3 units
This course provides an overview of web application development as a discipline concerned with the implementation of theory, application of knowledge, and realization of practice. It introduces the students to the principles and processes of web-based systems. It focuses on the analysis of needs of an online application and the tools available to answer these needs.