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.
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.
Overview of the field of data science. Introduction to subjects such as data format, processing, visualization, and storage. Special emphasis on historical and wider context, and simple practical examples. Repeatable one time. A-F only.
General course that provides a broad overview of computer science. Will address abstraction, data and information, algorithms, programming, the Internet and the global impact of computers.
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. ((P) Cross-listed as DATA 110P)
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.
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.
Includes logic, sets, functions, matrices, algorithmic concepts, mathematical reasoning, recursion, counting techniques, and probability theory. Pre: MATH 215 or 241 or 251A.
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)
(3 Lec, 1 3-hr. Lab) Reinforce and strengthen problemsolving 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: 111 or consent.
(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.
Program organization paradigms, programming environments, implementation of a module from specifications, the C and C++ programming languages. Pre: 211 or consent.
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)
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 (or concurrent).
Introduction to contemporary mathematical methods for empirical inference, data modeling, and machine learning. A-F only. Pre: MATH 241, MATH 203, MATH 215, or MATH 251A. (Fall only) (Cross-listed as DATA 235)
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 or consent.
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)
Part of a multi-year project-based courses sequence where students will work in teams on acquiring experience in a beginner-level design of a software project expected to be continued in ICS 396. CS majors only. A-F only. Pre: 111.
(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 EE 362) and (MATH 216 or 242 or 252A)] or (MATH 301 and 372); or consent.
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.
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.
Problem analysis and design, team-oriented development, quality assurance, configuration management, project planning. These topics are covered in the sequence 314-414. Pre: 211, and 241 or (MATH 301 and 372), or consent.
Introduction to relational database systems, data modeling, query processing, transaction processing, storage, and indexing. Pre: (311 or EE 367) and 314, or consent.
(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.
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.
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)
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.
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.
Intermediate object-oriented programming within the context of interactive media systems and video game development. Topics: classes, objects, inheritance, polymorphism, abstract classes, interfaces, event-driven programming, vectors, geometric primitives, game mechanics, and relevant design patterns. EE, CENG, ICS, CM, THEA, DNCE majors only. A-F only. Pre: 111 or EE 160 or instructor approval. (Cross-listed as EE 369)
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.
Part of a multi-year project-based courses sequence where students will work in teams on acquiring experience in intermediate-level design, implementation and presentation of a software project that may have been initiated in ICS 296. CS majors only. A-F only. Pre: 314 or concurrent.
Continuation of 314. Project management, quality, and productivity control, testing and validation, team management. Team-oriented software-implementation project. Pre: (311 or EE 367) and 314.
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.
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)
Very large database systems, data integration, data warehousing, designing big data systems, parallel query processing, distributed transactions. Pre: 321 or consent.
Computational and statistical methods for analyzing network models of social, technological, information, and biological networks. Introduction to relevant data analytics and graph analysis software packages. Pre: (311 or EE 367) or consent. (Cross-listed as DATA 422)
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.
Experience producing applications with at least two different applications frameworks. A-F only. Pre: (311 or EE 367) and 314, or consent.
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)
Information flow, confinement, information assurance, malicious programs, vulnerability analysis, network security, writing secure programs. A-F only. Pre: 355 or consent. (Once a year)
Examination of best practices associated with developing and supporting software
applications with respect to potential security risks. Will augment software engineering practices learned in other courses with the basic principles of cybersecurity. Pre: 314 or consent.
Provides students with the knowledge of underlying principles and skills to identify, preserve, and extract electronic evidence for further analysis. Pre: 355 or consent.
Memory management, control flow, interrupt mechanisms, multiprocessor systems, special-purpose devices. Pre: 331 or EE 361/361L.
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 322 and (311 or EE 367) and 314, or consent. (Once a year)
Introduction to critical statistical and probabilistic concepts that underlie data science as well as tools that play a central role in the daily work of a data scientist. A-F only. Pre: 211 or consent. (Cross-listed as DATA 434)
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: 235, or consent. Recommended: MATH 307. (Once a year) (Cross-listed as DATA 435)
Concepts, tools, and techniques for analyzing and mining massive data sets. Data cleaning and pre-processing. Data analysis and mining techniques. Big Data platforms. Big Data visualization. Pre: 321.
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.
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.
Introduction to parallel models of computation and design and analysis of parallel algorithms. Pre: (311 or EE 367) and 314. (Fall only)
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.
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)
Channel security. Trojan and noninterference. Basic concepts of cryptology. Cryptographic primitives. Protocols for authentication and key establishment. Pre: 355.
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 EE 367) or consent.
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)
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.
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.
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)
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.
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.
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)
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)
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.
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.
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: 110(Alpha) or 111 or ACM 215. (Cross-listed as ACM 484 and DATA 484)
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: any 110(Alpha) or 111 or ACM 215. (Cross-listed as ACM 487)
Students will learn to develop virtual reality and augmented reality applications with
turnkey tools as well as through programming. Prior programming experience is not required for this course. Pre: any 110(Alpha) or 111 or ACM 215. (Cross-listed as ACM 419).
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.
Special topics in security oriented toward juniors and seniors. Repeatable unlimited times. Pre: at least two 300-level ICS courses or consent.
Project-based course where students work in teams on a software project. Knowledge acquired in the computer science curriculum will be applied to design and implement a software product with potential real-world applicability. Repeatable one time. CS majors only. Senior standing or higher. A-F only. Pre: (311 or EE 367) and 314.
Individual or small group projects in system design or application under faculty supervision. Pre: consent.
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)
Design and implementation of compilers, syntactic and semantic descriptions of programming languages, algorithms for syntactic analysis and object code generation. Pre: 312 or consent.
Advanced study in operating systems theory and design with emphasis on case studies and distributed systems.
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: graduate standing, or consent.
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.
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)
Analysis and design of algorithms: modeling, comparison, measures, applications. Pre: graduate standing, or consent.
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.
Taxonomy of security properties: methods for defining and proving security. Randomness, pseudorandomness, and indistinguishability. Functional encryption and obfuscation. Zero knowledge. Pre: graduate standing, or consent.
Exploration of information retrieval and object-relational tools and methods for the management of distributed multimedia database systems. Pre: graduate standing, or consent.
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 multithreaded programming. A-F only. Pre: graduate standing in computer science or closely related field, or consent. (Once a year)
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)
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)
Graduate course on deep learning with artificial neural networks. Provides practical techniques for modeling image, video, text, and graph data with supervised, unsupervised, and reinforcement learning approaches. Includes instruction in the latest software frameworks. Graduate students only. Pre: 635 (or concurrent) or consent.
Advanced topics in formal languages, automata, computability, computational complexity. Pre: 441 or consent.
Design and analysis of parallel algorithms, with emphasis on advanced techniques and latest advances in parallel algorithms. Pre: graduate standing, or consent.
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. ICS majos only. Pre: graduate standing in ICS, or consent.
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)
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)
Current issues in artificial intelligence, including expert systems, knowledge representation, logic programming, learning, natural language processing. Pre: graduate standing, or consent.
Nature of the problem in pattern recognition and clustering; explanation of various algorithms. Pre: graduate standing, or consent.
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: graduate standing, or consent.
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 or consent.
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.
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.
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)
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)
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: graduate standing, or consent. (Once a year)
Introduction to the basic principles of biology relevant for microarray gene expression data and to Bio-conductor. 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)
Selected advanced topics in computer graphics. Substantial project required. Pre: 481 or consent.
Selected topics in numerical analysis, mathematical software, and scientific computation; examples include sparse matrix methods, finite element methods, mathematical programming. Pre: consent.
Fundamental problems and core concepts and techniques in computer vision, covering both theoretical and practical issues in the field. A-F only. Pre: graduate standing, or consent. (Once a year)
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)
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)
Series of talks on advanced research topics. Repeatable unlimited times. CR/NC only.
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.
Current topics and upcoming issues relevant to the field of information assurance and cyber security. Repeatable unlimited times. (Alt. years: spring)
Repeatable unlimited times. Pre: graduate standing and consent.
Research for master’s thesis. Repeatable unlimited times.
Research for doctoral dissertation. Repeatable eight times. Pre: candidacy for PhD in computer science.