Home About UH Academic Calendar Courses Undergraduate Education Graduate Education Degrees, Minors, & Certificates Colleges, Schools, & Academic Units






Information and Computer Sciences (ICS)

College of Natural Sciences

ICS 101 Digital Tools for the Information World (4) Fundamental information technology concepts and computing terminology, productivity software for problem solving, computer technology trends and impact on individuals and society. Emphasizes the utilization of operating systems and the production of professional documents, spreadsheets, etc.

ICS 110 (Alpha) Introduction to Computer Programming (3) Basic concepts needed to write computer programs. Simple program design and implementation using a specific programming language; (C) C; (D) through animations; (P) Python. Each alpha repeatable unlimited times, but credit earned one time only.

ICS 111 Introduction to Computer Science I (4) Overview of the fundamentals of computer science emphasizing problem solving, algorithm development, implementation, and debugging/testing using an object-oriented programming language. Pre: Recommended: computer experience.

ICS 141 Discrete Mathematics for Computer Science I (3) Includes logic, sets, functions, matrices, algorithmic concepts, mathematical reasoning, recursion, counting techniques, and probability theory. Pre: pre-calculus: MATH 134 or MATH 140 or MATH 161 or MATH assessment exam approval for MATH 215. FS

ICS 210 Information Systems in Society (3) Lecture/discussion critically explores sociopolitical dimensions of Information and Communication Technology (ICT), and the information professions. A-F only. Pre: departmental approval. (Once a year)

ICS 211 Introduction to Computer Science II (4) (3 Lec, 1 3-hr. Lab) Reinforce and strengthen problem-solving skills using abstract data types and introduce software development practices. Emphasize the use of searching and sorting algorithms and their complexity, recursion, object-oriented programming, and data structures. Pre: grade of "B" or higher in 111 or consent.

All students wishing to enroll in ICS courses above 211 except ICS 241 must meet the prerequisite grade requirement of B or higher in ICS 111 and 211 prior to registering for the course.

ICS 212 Program Structure (3) Program organization paradigms, programming environments, implementation of a module from specifications, the C and C++ programming languages. Pre: 211 or consent.

ICS 215 Introduction to Scripting (3) Introduction to scripting languages for the integration of applications and systems. Scripting in operating systems, web pages, server-side application integration, regular expressions, and event handling for languages such as Perl, JavaScript, PHP, Python, shell scripting. A-F only. Pre: 211 (or concurrent), or consent. (Once a year)

ICS 222 Basic Concepts of Computer Science (3) What is the subject of computer science? What is a computer? Understand the basic models of computation and the concepts of computability, complexity, and network computation, and learn to use them in practice. A-F only. Pre: 141.

ICS 241 Discrete Mathematics for Computer Science II (3) Includes program correctness, recurrence relations and their solutions, relations and their properties, divide and conquer relations, graph theory, trees and their applications, Boolean algebra, introduction to formal languages and automata theory. Pre: 141 (with a minimum grade of B) or consent. FS

ICS 290 Computer Science Careers: An Exploration of the Specialties of Computer Science (1) Exploration of the specialties of computer science. Meets every two week for 2.5 hours to explore specific areas in computer science. CR/NC only. (Once a year)

ICS 311 Algorithms (4) (4 1-hr Lec) Design and correctness of algorithms, including divide-and-conquer, greedy and dynamic programming methods. Complexity analyses using recurrence relations, probabilistic methods, and NP-completeness. Applications to order statistics, disjoint sets, B-trees and balanced trees, graphs, network flows, and string matching. Pre: 211 and 241, or consent.

ICS 312 Machine-Level and Systems Programming (3) Machine organization, machine instructions, addressing modes, assembler language, subroutine linkage, linking to higher-level languages, interface to operating systems, introduction to assemblers, loaders and compilers. Pre: 212 (or concurrent), (311 or EE 367), and 314, or consent.

ICS 313 Programming Language Theory (3) Syntax, semantics, control structures, variable binding and scopes, data and control abstractions. Programming in functional (LISP) and logic (Prolog) programming styles. Pre: Pre: 212, (311 or EE 367), and 314, or consent.

ICS 314 Software Engineering I (3) Problem analysis and design, team-oriented development, quality assurance, configuration management, project planning. These topics are covered in the sequence 314-414. To take 414, 314 must be taken in the semester immediately before 414. Pre: 211 and 241, or consent.

ICS 321 Data Storage and Retrieval (3) Data storage devices, timing and capacity, programming for files, hashed and indexed files, introduction to relational database systems. Pre: (311 or EE 367) and 314, or consent.

ICS 331 Logic Design and Microprocessors (4) (1 3-hr Lab) Basic machine architecture, microprocessors, bus organization, circuit elements, logic circuit analysis and design, microcomputer system design. Pre: 212, (311 or EE 367), and 314; or consent.

ICS 332 Operating Systems (3) Operating system concepts and structure, processes and threads, CPU scheduling, memory management, scheduling, file systems, inter-process communication, virtualization, popular operating systems. A-F only. Pre: (311 or EE 367) and 314.

ICS 351 Network Design and Management (3) Overview of the internet and its capabilities; introduction to HTTP, TCP/IP, ethernet, and wireless 802.11; routers, switches, and NAT; network and wireless security; practical experience in designing and implementing networks. Pre: (311 or EE 367) and 314, or consent. (Once a year)

ICS 355 Security and Trust I: Resource Protections (3) Security and trust in computers, networks, and society. Security models. Access and authorization. Availability and Denial-of-Service. Trust processes and network interactions. Pre: 222 and 314 and (311 or EE 367). (Spring only)

ICS 361 Introduction to Artificial Intelligence Programming (3) Introduction to the theory of Artificial Intelligence and the practical application of AI techniques in Functional (Common LISP and/or Scheme) and Logic (Prolog) programming languages. Students gain practical experience through programming assignments and projects. A-F only. Pre: (212 or 215) and (311 or EE 367) and 314, or consent.

ICS 390 Computing Ethics for Lab Assistants (3) A lecture/discussion/internship on ethical issues and instructional techniques for students assisting a laboratory section of ICS 101. The class uses multiple significant writing and oral presentation activities to help students learn course content. Pre: 101(Alpha) and consent.

ICS 414 Software Engineering II (3) Continuation of 314. Project management, quality, and productivity control, testing and validation, team management. Team-oriented software-implementation project. The second course of a year sequence and must be taken in the semester following 314. Pre: (311 or EE 367) and 314.

ICS 415 Introduction to Programming for the Web (3) Introduction to emerging technologies for construction of World Wide Web (WWW)-based software. Covers programming and scripting languages used for the creation of WWW sites and client-server programming. Students will complete a medium-sized software project that uses languages and concepts discussed in class. Pre: (311 or EE 367) and 314, or consent.

ICS 419 The Science, Psychology and Philosophy of Systems Design (3) Scientific, psychological and philosophical bases of systems design, including a survey of human-factors and ergonomic standards; the nature of innovation and creativity as it relates to systems design. Web-enhanced course. Pre: (311 or EE 367) and 314, or consent. (Once a year)

ICS 421 Database Systems (3) Principles of database systems, data modeling, relational models, database design, query languages, query optimization, concurrency control data security. Pre: 321 or consent.

ICS 422 Data Processing (3) Role of data processing in organizations, programming practices, ethics, sequential and indexed file processing, report writing, online transaction processing. Pre: 321 or consent.

ICS 423 Data Security and Cryptography I (3) Secret communication and confidentiality data storage. Elements of cryptography and cryptanalysis. Classical ciphers. Symmetric key cryptography. Public key cryptography. Data security in cyber space. Pre: 355 or consent.

ICS 424 Application Frameworks (3) Experience producing applications with at least two different applications frameworks. A-F only. Pre: (311 or EE 367) and 314, or consent.

ICS 425 Computer Security and Ethics (3) Theoretical results, security policy, encryption, key management, digital signatures, certificates, passwords. Ethics: privacy, computer crime, professional ethics. Effects of the computer revolution on society. A-F only. Pre: 355 or consent. (Once a year)

ICS 426 Computer System Security (3) Information flow, confinement, information assurance, malicious programs, vulnerability analysis, network security, writing secure programs. A-F only. Pre: 355 or consent. (Once a year)

ICS 431 Computer Architecture (3) Memory management, control flow, interrupt mechanisms, multiprocessor systems, special-purpose devices. Pre: 331 or EE 361/361L.

ICS 432 Concurrent and High-Performance Programming (3) Principles of concurrent and high performance programming. Multi-threading in C and Java for shared-memory programming. Distributed memory programming with Java. Introduction to cluster computing. A-F only. Pre: 212 and (311 or EE 367) and 314, or consent. (Once a year)

ICS 435 Machine Learning Fundamentals (3) Introduction to machine learning concepts with a focus on relevant ideas from computational neuroscience. Information processing and learning in the nervous system. Neural networks. Supervised and unsupervised learning. Basics of statistical learning theory. Pre: (311 or EE 367) and 314, or consent. Recommended: MATH 307. (Once a year)

ICS 441 Theory of Computation (3) Grammars, sequential machines, equivalence, minimalization, analysis and synthesis, regular expressions, computability, unsolvability, Gödel’s theorem, Turing machines. Pre: (311 or EE 367) and 314, or consent.

ICS 442 Analytical Models and Methods (3) Applications of mathematical methods in computer science with emphasis on discrete mathematics, numerical computation, algebraic models, operations research. Pre: (311 or EE 367) and 314, or consent.

ICS 443 Parallel Algorithms (3) Introduction to parallel models of computation and design and analysis of parallel algorithms. Pre: (311 or EE 367) and 314. (Fall only)

ICS 451 Data Networks (3) Network analysis, architecture, digital signal analysis and design; circuit switching, packet switching, packet broadcasting; protocols and standards; local area networks; satellite networks; ALOHA channels; examples. Pre: 212 and (311 or EE 367) and 314, or consent.

ICS 452 Software Design for Robotics (3) Sensors, actuators, signal processing, paradigms of robotic software design, introduction to machine learning, introduction to computer vision, and robot-to-human interaction. A-F only. Pre: two ICS 300-level courses or consent. Recommended: 312 and 313. (Once a year: spring)

ICS 455 Security and Trust II: Information Assurance (3) Channel security. Trojan and noninterference. Basic concepts of cryptology. Cryptographic primitives. Protocols for authentication and key establishment. Pre: 355. (Fall only)

ICS 461 Artificial Intelligence (3) Survey of artificial intelligence: natural language processing, vision and robotics, expert systems. Emphasis on fundamental concepts: search, planning, and problem solving, logic, knowledge representation. Pre: 311 or consent.

ICS 462 Artificial Intelligence for Games (3) Techniques to stimulate intelligence in video games: movement, pathfinding with A* search, decision/behavior trees, state machines, machine learning, tactics. Extend games with your own AI implementations; experience "shootout" contests for the best AI algorithm/implementation. Pre: 212 and (311 or EE 367) and 314 and (PHYS 151 or PHYS 170). (Alt. years)

ICS 464 Human Computer Interaction I (3) Application of concepts and methodologies of human factors, psychology and software engineering to address ergonomic, cognitive, and social factors in the design and evaluation of human-computer systems. Pre: (311 or EE 367) and 314, or consent.

ICS 465 Introduction to Hypermedia (3) Basic issues of interactive access to information in various formats on computers. Available hardware and software: editing, integration, programming. Implementation of a sample information system. Pre: (311 or EE 367) and 314.

ICS 466 Design for Mobile Devices (3) Lecture introducing design issues, programming languages, operating systems and mark-up languages for internet-enabled mobile devices, such as cell phones and PDAs. A-F or Audit. Pre: (311 or EE 367) and 314, or consent. (Spring only)

ICS 469 Cognitive Science (3) Introduces basic concepts, central problems, and methods from cognitive science. Identifies contributions from disciplines such as cognitive psychology, linguistics, artificial intelligence, philosophy, and neuroscience. Pre: (311 or EE 367) and 314, or consent.

ICS 471 Probability, Statistics, and Queuing (3) A hands-on introduction to probability, statistical inference, regression, Markov chains, queuing theory. Use of an interactive statistical graphics environment such as R. Pre: (311 or EE 367) and 314, or consent.

ICS 475 Introduction to Bioinformatics Sequences and Genomes Analysis (3) Introduction to bioinformatics to computer sciences students by focusing on how computer sciences techniques can be used for the storage, analysis, prediction and simulation of biological sequences (DNA, RNA and proteins). A-F only. Pre: (311 or EE 367) and 314, or consent. (Once a year)

ICS 476 Bioinformatics Algorithms and Tool Development (3) Study of commonly used bioinformatic algorithms, with an emphasis on string, tree, and graph algorithms. Presentation of probabilistic and clustering methods. Implementation of the studied algorithms and design of applications. Pre: 475 or consent. (Once a year)

ICS 481 Introduction to Computer Graphics (3) Fundamentals of computer graphics including graphics hardware, representation, manipulation, and display of two- and three-dimensional objects, use of commercial software. Pre: (MATH 216, MATH 242, or MATH 252A) and (311 or EE 367) and 314; or consent.

ICS 483 Computer Vision (3) Introductory course in computer vision. Topics include image formation, image processing and filtering, edge detection, texture analysis and synthesis, binocular stereo, segmentation, tracking, object recognition and applications. A-F only. Pre: 212 and (311 or EE 367) and 314, or consent. Once a year.

ICS 484 Data Visualization (3) Introduction to data visualization through practical techniques for turning data into images to produce insight. Topics include: information visualization, geospatial visualization, scientific visualization, social network visualization, and medical visualization. Junior standing or higher. Pre: (311 or EE 367) and 314. (Spring only)

ICS 485 Video Game Design and Development (3) Students will team design, build, and demonstrate video games or related interactive entertainment environments and applications. Topics will include emerging computer science techniques relevant to the development of these types of environments. Junior standing or higher. Pre: two ICS 300-level courses. (Spring only)

ICS 491 Special Topics (3) Reflects special interests of faculty. Oriented toward juniors and seniors. Repeatable one time for BS/CS students. Pre: at least two 300-level ICS classes or consent.

ICS 495 Special Topics in Security (3) Special topics in security oriented toward juniors and seniors. Repeatable unlimited times. Pre: at least two 300-level ICS courses or consent. (Alt. years: fall)

ICS 499 Computer Project (V) Individual or small-group projects in system design or application under faculty supervision. Pre: consent.

ICS 500 Master’s Plan B/C Studies (1) Enrollment for degree completion. Pre: master’s Plan B or C candidate and consent.

ICS 606 Intelligent Autonomous Agents (3) Theory, methods and practical applications of autonomous agent systems, including common applications of both software and hardware (robotic) agents. In-depth practical experience with autonomous agents through programming assignments and projects. Pre: 313 or EE 467 (or equivalent), graduate standing; or consent. (Once a year) (Cross-listed as EE 606)

ICS 611 Compiler Theory and Construction (3) Design and implementation of compilers, syntactic and semantic descriptions of programming languages, algorithms for syntactic analysis and object code generation. Pre: 312 or consent.

ICS 612 Theory of Operating Systems (3) Advanced study in operating systems theory and design with emphasis on case studies and distributed systems.

ICS 613 Advanced Software Engineering (3) Fundamental software engineering procedures, including planning, estimation, design, testing, process definition and improvement, and software quality assurance. Measurement techniques are used to support empirically-driven software process improvement throughout the course. Pre: 414 or consent.

ICS 614 Medical Informatics I (3) Introduction to the field of medical informatics, which is found at the intersection of clinical science, public health, information science, computer technology and communications technology. Concentration on current issues. Pre: consent.

ICS 616 Information Architecture and Web Design (3) User-centered design of websites; survey Information Architecture (IA) systems (organization, navigation, labeling, searching); gain experience in methodologies for creating IA, tools for IA, web standards and usability tests. ICS and LIS majors only. A-F only. Pre: graduate standing in ICS or LIS or related field or consent. (Once a year)

ICS 621 Analysis of Algorithms (3) Analysis and design of algorithms: modeling, comparison, measures, applications. Pre: 311.

ICS 622 Network Science (3) Modeling human-made and natural systems as networks to understand their structure and dynamics. Computational and statistical methods and research results they enabled. Use of network analysis software. Applications to topics of interest to students.

ICS 623 Advanced Cryptography (3) Taxonomy of security properties: methods for defining and proving security. Randomness, pseudorandomness, and indistinguishability. Functional encryption and obfuscation. Zero knowledge. Pre: 423 and 455, or consent.

ICS 624 Advanced Data Management (3) Exploration of information retrieval and object-relational tools and methods for the management of distributed multimedia database systems. Pre: 321 or 421 or LIS 670, or consent.

ICS 632 Principles of High Performance Computing (3) Principles of high performance computing for single-processor and parallel architectures. Detailed coverage of parallel architectures and exposure to shared-memory, distributed-memory, and hybrid parallelism. Hands-on experience with message-passing and multi-threaded programming. A-F only. Pre: graduate standing in computer science or closely related field, or consent. (Once a year)

ICS 635 Machine Learning (3) Introduction to key theoretical concepts of machine learning. Practical experience with decision free methods, artificial neural networks. Bayesian belief networks and contemporary statistical methods including regression, clustering and classification. Pre: consent. (Once a year)

ICS 636 Information Theory in Machine Learning (3) Basics of information processing and learning in the brain; neural networks; learning algorithms based on information maximization; applications in molecular biology and bioinformatics. A-F only. Pre: graduate standing in computer science or mathematics background, or consent. (Once a year)

ICS 641 Advanced Theory of Computation (3) Advanced topics in formal languages, automata, computability, computational complexity. Pre: 441 or consent.

ICS 643 Advanced Parallel Algorithms (3) Design and analysis of parallel algorithms, with emphasis on advanced techniques and latest advances in parallel algorithms. Pre: 311 (with a minimum grade of B) or equivalent.

ICS 651 Computer Networks (3) Elementary principles of modern computer networking. Detailed coverage of overall architecture and the physical, data link, and network layers, with emphasis on the network layer. Pre: 451.

ICS 655 Security and Trust III: Cyber Security and Commerce (3) Tools and methods for security managers. Tools and methods to secure and monetize services and applications. Network as a computer and as a market. Problems of cyber war, cyber crime, cyber bullying. Graduate students only. (Spring only)

ICS 660 Computer Architecture I (3) Models of computation, high-performance processors, pipelined machines, RISC processors, VLIW, superscalar and fine-grain parallel machines. Data-flow architectures. Hardware/software tradeoffs. Pre: EE 461. (Cross-listed as EE 660)

ICS 661 Advanced Artificial Intelligence (3) Current issues in artificial intelligence, including expert systems, knowledge representation, logic programming, learning, natural language processing. Pre: 461 or consent.

ICS 663 Pattern Recognition (3) Nature of the problem in pattern recognition and clustering; explanation of various algorithms. Pre: MATH 371.

ICS 664 Human-Computer Interaction II (3) Studies of human performance in designing and using information systems. Emphasizes concepts and methodologies from human factors, psychology, and software engineering relating to human performance. Pre: 464 or consent.

ICS 665 User Interfaces and Hypermedia (3) Advanced concepts in construction of interfaces between computers and their users. Hypermedia information structures, guidelines, problems, and tradeoffs. Discussion of selected readings, implementation of prototypes. Pre: 465.

ICS 667 HCI Design Methods (3) Advanced analytical and empirical methods for the design and evaluation of usable, useful, and robust human-computer interfaces. Students will apply selected methodologies to a major system design project. Pre: 464 or 465, or consent.

ICS 668 Social Informatics (3) An advanced introduction to the design of human-computer systems and other technological artifacts for supporting human collaboration in learning, work and social contexts, and to theoretical perspectives and empirical studies of collaboration that inform such design. A-F only. Pre: 464 or 465 or 664 or 665 or 667 or LIS 677; or consent.

ICS 669 Social Computing (3) Participative analysis of online communities and user-generated content collections. Theoretical and practical aspects of online interaction, identity, trust, and virtual social capital. A-F only. (Once a year)

ICS 674 Evolutionary Computation I: Survey of Methods (3) Evolutionary computation surveys in the field to prepare students for research. Topics include diverse engineering applications, theory, and concepts including search spaces, representation, objective functions, variation operators, selection, and population based search. Pre: 211 (B or better) and 241 (C or better) and admitted to a graduate program or capable of graduate-level work in computer sciences, or consent. (Once a year: fall)

ICS 675 Bioinformatics: Sequences Analysis (3) To expose students to bioinformatics at the biological sequences analysis level (DNA, RNA, proteins). Several bioinformatics methods and algorithms are introduced. Students are required to present one paper and to participate in a small group project. A-F only. Pre: 475 or MBBE 683, or consent. (Once a year)

ICS 676 Bioinformatics: Microarrays (3) Introduction to the basic principles of biology relevant for microarray gene expression data and to Bioconductor. Collaborative open-source project to develop a modular general framework for the analysis of cDNA arrays and gene chips. A-F only. Pre: 311 or background in biology, or consent. (Once a year)

ICS 681 Computer Graphics (3) Selected advanced topics in computer graphics. Substantial project required. Pre: 481 or consent.

ICS 682 Numerical Computation (3) Selected topics in numerical analysis, mathematical software, and scientific computation; examples include sparse matrix methods, finite element methods, mathematical programming. Pre: consent.

ICS 683 Advanced Computer Vision (3) Fundamental problems and core concepts and techniques in computer vision, covering both theoretical and practical issues in the field. A-F only. Pre: 483 or consent. (Once a year)

ICS 685 Virtual and Augmented Reality (3) Students will learn the science, engineering, art, and applications of virtual reality and augmented reality, with an emphasis on the construction of working virtual environments. Graduate students only. (Fall only)

ICS 686 Digital Video Information (3) Principles and techniques of technical and context analysis of digital video information. Video capture and editing tools, compression and analysis algorithms, visual culture, narrative structure, juxtaposition of multimedia elements and their effects on information transmission. Pre: graduate standing or consent. (Alt. years)

ICS 690 Seminar in ICS (1) Series of talks on advanced research topics. Repeatable unlimited times.CR/NC only.

ICS 691 (Alpha) Topics in Computer Science (3) Reflects special interests of faculty in various areas of computer science. (B) area 1; (C) area 2; (D) area 3; (E) area 4; (G) general. Repeatable unlimited times in different topics and different areas. Pre: consent.

ICS 695 Advanced Special Topics in Security (3) Current topics and upcoming issues relevant to the field of information assurance and cyber security. Repeatable unlimited times. (Alt. years: spring)

ICS 699 Directed Reading/Research (V) Repeatable unlimited times. Pre: graduate standing and consent.

ICS 700 Thesis Research (V) Research for master’s thesis. Repeatable unlimited times.

ICS 800 Dissertation Research (V) Research for doctoral dissertation. Repeatable eight times. Pre: candidacy for PhD in computer science.