CIIC/INSO Course Catalog
Course information might not be the latest, for obtaining the latest course description, please check the official undergraduate catalog at the following link.
CIIC 3015

Introduction to Computer Programming I

Description: Analysis of algorithmic problems, development of solutions, and their implementation in a high level programming language using object-oriented programming techniques.

Topics: Numerical systems, internal representation, constants, variables, and data types, selection, and iteration control structures, functions, and data passing mechanisms, basic data structures, pointers, and dynamic memory management, data input/output, files, and software development environments.

Pre-requisites: None

Terms Offered: First Semester, Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 3075 (ICOM 4075)

Foundations of Computing

Description: Discrete structures in computer sciences and engineering with emphasis on problem-solving skills and algorithms. Topics include: set theory, logic and proof techniques, graph theory, computability, and discrete probability applied to computing problems.

Pre-requisites: CIIC 3015 or CIIC 3011 or INGE 3016. Co-Requisite: MATE 3031.

Terms Offered: First Semester, Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 3081

Computer Architecture I

Description: Study of fundamental concepts of logic circuit analysis and design with the aim of understanding and designing the main components of a modern processor. Topics include: boolean algebra, logic gates, combinational and sequential circuits, arithmetic logic units (ALU ), memory and programmable logic devices, data paths, and control units. Practice with logic circuit design problems.

Pre-requisites: CIIC 3015 or CIIC 3011 or INGE 3016. Co-Requisite: INEL 4115

Terms Offered: First Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4010 (ICOM 4015)

Advanced Programming

Description: Advanced programming techniques applied to the solution of engineering problems, extensive use of subprograms, logical and specifications statements. Principles of multiprogramming, multiprocessing, and real-time systems.

Pre-requisites: CIIC 3015 or CIIC 3011 or INGE 3016

Terms Offered: First Semester, Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4020 (ICOM 4035)

Data Structures

Description: Data structures in programming languages; representation of information as data lists in linear, orthogonal, string, and array form; tree structures; techniques for storage allocation, distribution collection, and sorting of data.

Pre-requisites: (CIIC 4010 or ICOM 4015) and (CIIC 3075 or ICOM 4075). Correquisite: MATE 3031

Terms Offered: First Semester, Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4025 (ICOM 4038)

Analysis and Design of Algorithms

Description: Study of methods and techniques for the complexity analysis of computer algorithms. Design of new algorithms capable of minimizing execution time while optimizing the use of computer resources. Topics include: asymptotic analysis, greedy strategies, divide and conquer, dynamic programming, backtracking, and graph, search, and sorting algorithms.

Pre-requisites: CIIC 4020 or ICOM 4035

Terms Offered: Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4030 (ICOM 4036)

Programming Languages

Description: Comparative study of programming styles, including imperative, object-oriented, functional, logic, and concurrent programming. Concepts of data encapsulation and inheritance. Formal specification of the syntactic structure of a language. Context-free grammars and parse trees.

Pre-requisites: CIIC 4020 or ICOM 4035

Terms Offered: First Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4050 (ICOM 5007)

Operating Systems

Description: Study of operating systems, multiprogramming, multiprocessing, batch, partitioned, and real time processing, organization and processing of file systems, queuing theory and information flow control.

Pre-requisites: (CIIC 4020 or ICOM 4035) and (CIIC 4082 or INEL 4206)

Terms Offered: First Semester, Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4151

Senior Design Project I

Description: Team project to design, implement, test, and document a system based on Computer Systems and Computer Architecture techniques, incorporating computer science standards, engineering standards and problem constraints.

Pre-requisites:(CIIC 4025 and CIIC 4060 and INSO 4101) or Dir

Terms Offered: First Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4060 (ICOM 5016)

Database Systems

Description: Study of database system architectures, design and implementation of database applications, conceptual and representational models, SQL and the relational model, functional dependencies and normalization, transaction processing.

Pre-requisites: CIIC 4020 o ICOM 4035. Correquisite: CIIC 4050 o ICOM 5007

Terms Offered: Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4070 (ICOM 5026)

Computer Networks

Description: Study and development of skills required for the design of network protocols and network-centric applications, with emphasis on Internet protocols. Topics include: the ISO layered model, TCP/IP, routing, client-server model, World Wide Web, and Web Services. Practice with analysis and programming problems.

Pre-requisites: CIIC 4020 or ICOM 4035 Correquisite: CIIC 4050 or ICOM 5007

Terms Offered: Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4082

Computer Architecture II

Description: Study of fundamental computer architecture concepts with the objective of designing efficient processors and computing systems to support operating systems and high-level programming languages. Topics include: subroutines, exceptions, input/output, pipelining, and hierarchical memories. Practice with analysis, design, and programming problems.

Pre-requisites: CIIC 3081

Terms Offered: Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 4995

Engineering Practice for Coop Students

Description: Practical experience in Computer Science and Engineering in cooperation with private industry or government to be jointly supervised by the academic department, the Coop Program Coordinator, and an official from the cooperating organization.

Pre-requisites: Authorization of the Director of the Department.

Terms Offered: According to Demand

Years Offered: According to Demand

Syllabus: You may find a copy of the course syllabus here.

CIIC 4998

Undergraduate Research

Description: Development of a research project related to Computer Science and Engineering, under the supervision of a faculty member.

Pre-requisites: CIIC 4020 or ICOM 4035 or authorization of the Director of the Department.

Terms Offered: According to Demand

Years Offered: According to Demand

Syllabus: You may find a copy of the course syllabus here.

CIIC 5015 (ICOM 5015)

Artificial Intelligence

Description: An introduction to the field of artificial intelligence: Lisp language, search techniques, games, vision, representation of knowledge, inference and process of proving theorems, natural language understanding.

Pre-requisites: CIIC 4020 or ICOM 4035 or Permission of the Director of the Department

Terms Offered: Second Semester

Years Offered: Odd Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5017 (ICOM 5017)

Operating Systems and Network Administration and Security

Description: Practical experience with the administration and security of operating systems and computer networks. Design and development of methods for the detection and response to attacks on such systems.

Pre-requisites: CIIC 4070 or ICOM 5026

Terms Offered: First Semester

Years Offered: Odd Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5018 (ICOM 5018)

Cryptography and Network Security

Description: Theoretical and practical aspects of computing system and network security, threat models, system vulnerability to attacks such as: hackers, malicious code, Trojan horses, viruses, and worms, cryptographic techniques used to defend systems from such attacks.

Pre-requisites: CllC 4050 or ICOM 5007 or Permission from the Director of the Department

Terms Offered: Second Semester

Years Offered: Even Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5019 (OLD 4019)

High-Performance Computing

Description: Study of the fundamentals concepts associate with the performance of a computing system. Discussion of techniques for the reduction of operations with the aim of minimizing the response time of a system to problems whose solution poses a high demand of computational resources. Study of parallelization, and concurrency strategies, and practical experiences with the use of systems and tools implementing them.

Pre-requisites: CIIC 4020 or ICOM 4035 or Authorization from Department Director

Terms Offered: First Semester

Years Offered: Odd Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5029 (ICOM 4029)

Compilers Development

Description: Study and application of techniques associated with the analysis of source languages and the generation of efficient object codes with emphasis on the components of a compiler.

Pre-requisites: CIIC 4082 or INEL 4206. Corequisites: CIIC 4030 or ICOM 4036.

Terms Offered: Second Semester

Years Offered: Odd Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5045

Automata and Formal Languages

Description: Study of theoretical computational models, languages, and machines. Introduction to the theory of intractable and un-decidable problems. Topics include: finite automata, regular languages, context-free languages, pushdown automata, Turing machine, halting problem, undecidability, and intractable problems.

Pre-requisites: CIIC 4020 or ICOM 4035 or Authorization of the Director of the Department

Terms Offered: First Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

CIIC 5110

Bioinformatics Algorithms

Description: Discussion of algorithms for processing genomic and proteomic data. Discussion of heuristic randomized and non-heuristic algorithmic solutions for sequence comparison, gene finding and gene expression state determination problems, among others.  Discussion of algorithmic design principles and their impacts on time and space complexity and the quality of results. 

Pre-requisites: ININ 4010 and (CIIC 4025 or ICOM 4038) or Authorization of the Director of the Department

Terms Offered: Second Semester

Years Offered: Even Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5120

Virtual Machines

Description: Discussion of concepts related to the design and implementation of virtual computer monitors, including traditional computer virtualization techniques such as “trap-and-emulate”, translation of binary files, “shadow page tables”, and principles of emulation of devices.  Discussion of classic publications in the area of virtualization and recent advances in the subject.

Pre-requisites: (CIIC 4050 or ICOM 5007) or Authorization of the Director of the Department

Terms Offered: Second Semester

Years Offered: Even Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5130

Cloud Computing Infrastructures

Description: Discussion of the principles of cloud computing. Discussion of the virtualization, load balancing in the system, scalability and elasticity, replication and deployment.  Design and programming of applications in the cloud.  Discussion of advanced aspects of cloud computing including security and software performance evaluation.  Discussion of the use of cloud infrastructure for areas such as health, transportation, energy and education.

Pre-requisites: (CIIC 4060 or ICOM 5016) and (CIIC 4070 or ICOM 5025) or Authorization of the Director of the Department

Terms Offered: First Semester

Years Offered: Odd Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5140

Big Data Analytics

Description: Description of the principles of big data systems and analysis techniques for the design of cloud computing processes.  Discussion of the implementation of parallel algorithms to process data on cloud-resident storage and memory-based file systems.

Pre-requisites: ININ 4010 and (CIIC 4060 or ICOM 5016) or Authorization of the Director of the Department

Terms Offered: First Semester

Years Offered: Even Years

Syllabus: You may find a copy of the course syllabus here.

CIIC 5150

Machine Learning Algorithms

Description:Development of machine learning algorithms and programs using supervised and unsupervised learning methods following different strategies such as graph-based models and their generalization: decision trees, kernel methods, neural networks and deep learning concepts, clustering and anomaly detection. Use of software libraries and frameworks using computational models of directed graphs in distributed systems and graphical processing units (“GPU”). Graphical visualization of data and results using data manipulation tools and their respective data sources. Discussion of recent research publications in machine learning and their application in industry and academia.

Pre-requisites: (CIIC 4020 or equivalent) and ININ 4010 or authorization by the Department Director

Terms Offered:According to Demand

Years Offered:According to Demand

Syllabus: You may find a copy of the course syllabus here.

CIIC 5995

Selected Topics

Description: Selected topics in computer science and engineering.

Pre-requisites: Authorization of the Director of the Department.

Terms Offered: According to Demand

Years Offered: According to Demand 

Syllabus: You may find a copy of the course syllabus here.

INSO 4101 (ICOM 4009)

Introduction to Software Engineering

Description: Introduction to the software development cycle. Models for the software development process and related metrics. Ethical issues in software engineering.

Pre-requisites: CIIC 4020 or ICOM 4035

Terms Offered: First Semester and Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

INSO 4115

Software Engineering Requirements

Description: Techniques used to determine the requirements of a complex software system: specification standards, the UML language, validation, specification management tools, and quality metrics. Elicitation and development of software system requirements. Discussion of ethical issues arising during requirements elicitation.
(TO BE OFFERED BEGINNING IN THE SPRING 2018)

Pre-requisites: INSO 4101 or ICOM 4009

Terms Offered: Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

INSO 4116

Software Design

Description: Fundamental principles and development of skills required for the effective design of complex software systems. Topics include: formal design methods, design specification standards, design patterns, design validation, and design metrics. Use of computer-aided software engineering (CASE) tools.
(TO BE OFFERED FOR BEGINNING IN THE FALL 2017)

Pre-requisites: INSO 4101 or ICOM 4009

Terms Offered: First Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

INSO 4117

Software Reliability Testing

Description: Software testing and validation techniques with the aim of developing the skills required to design reliable and fault-tolerant software systems. Topics include: unit, integrated, performance, stress, usability, and fault tolerance testing. Practice with computerized testing and debugging tools.
(TO BE OFFERED BEGINNING IN THE SPRING 2019)

Pre-requisites: INSO 4101 or ICOM 4009

Terms Offered: Second Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

INSO 4998

Undergraduate Research in Software Engineering

Description: Development of a research project related to Software Engineering, under the supervision of a faculty member

Pre-requisites: Authorization of the Director of the Department.

Terms Offered: According to Demand

Years Offered: According to Demand

Syllabus: You may find a copy of the course syllabus here.

INSO 5111

Introduction to Human-Computer Interaction

Description: Introduction to the principles of human-computer interaction with the objective of developing the skills necessary to design and implement graphical user interfaces (GUI). Topics include: cognitive psychology, human factors, and interaction styles. Practice in designing and evaluating the usability of various graphical user interfaces.

Pre-requisites: ICOM 4035 or CIIC 4020 or Authorization from the Director of the Department

Terms Offered: First Semester

Years Offered: Even Years

Syllabus: You may find a copy of the course syllabus here.

INSO 4151

Software Engineering Project I

Description: Team project to design, implement, test, and document a system that encompasses all phases of the software engineering development process to solve an academic, governmental, commercial, or industrial problem. (TO BE OFFERED BEGINNING FALL 2019)

Pre-requisites: (INSO 4115 and INSO 4116 and INSO 4117 and CIIC 4025 and CIIC 4060) or DIR

Terms Offered: First Semester

Years Offered: Every Year

Syllabus: You may find a copy of the course syllabus here.

INSO 4995

COOP

Description: Practical experience in Software Engineering in cooperation with private industry or government to be jointly supervised by the academic department, the Coop Program Coordinator, and an official from the cooperating organization.

Pre-requisites: Authorization of the Director of the Department.

Terms Offered: According to Demand

Years Offered: According to Demand

Syllabus: You may find a copy of the course syllabus here.

INSO 5118

Software Engineering Project Management

Description: Discussion of techniques and tools for estimation, planning, monitoring, documentation, evaluation, refinement, and quality control of software. Development of skills for the effective administration of complex software engineering projects. Practice in project administration.

Pre-requisites: INSO 4101 or ICOM 4009 or Authorization from the Director of the Department

Terms Offered: First Semester

Years Offered: Odd Years

Syllabus: You may find a copy of the course syllabus here.