>>
Fundamental concepts of computing and information science and their application to everyday computer use. Topics include data representation, addressing and mapping, network protocols, standards, data exchange, encryption and security, mathematical modeling, and data modeling. Hands-on labs…
Introduction to computer models used as tools of scientific investigation, including historically important examples in the natural and social sciences. Lectures cover topics of current public interest, including economics, epidemiology, and ecological sustainability.
Not offered on a…
This course is an introduction to algorithmic problem solving using the Python programming language: objects, values, types, expressions, simple statements, compound statements, inputs, and outputs. This course includes programming projects that incorporate algorithm design and implementation in…
Algorithms, programs, and computing systems. Fundamental techniques of program development and supportive software tools. Programming projects and applications in a structured computer language. Hands-on experience using microcomputers.
This course is a rigorous introduction to problem…
Software development techniques in an object-oriented computer language. An intermediate programming course emphasizing systems methods, top-down design, testing, modularity, and structured techniques. Applications from areas of numeric and non-numeric processing and data structures.
This…
Provides an introduction to concepts in scientific programming and data science using the Python language. Students are given hands-on opportunities to learn techniques applicable to quantitative analysis across a broad range of fields. Core programming concepts are taught in tandem with real-…
An introduction to concepts in scientific programming and data science using the Python language. Students are given hands-on opportunities to learn techniques applicable to quantitative analyses across a broad range of fields. Core programming concepts are taught in tandem with real-world…
Programs and programming techniques used in systems programming in Unix environments. Students will learn the basics of Unix systems programming, including file and directory structures, basic and advanced file I/O, process creation, and inter-process communication.
A topic in elementary computer science not covered by any other lower-division computer science course.
Not offered on a regular basis.
Basic topics of scientific computing that are necessary for science and engineering students. Solving mathematical problems by different numerical methods. Quantitative reasoning concepts will be emphasized in comparing and verification of the correctness of the solutions. Mathematical software…
This course presents a survey of the fundamental mathematical tools used in computer engineering: sets, relations, and functions; propositional and predicate logic; proof writing strategies such as direct, contradiction and induction; summations and recurrences; elementary asymptotics and timing…
A survey of the fundamental mathematical tools used in Computer Science: sets, relations, and functions; propositional and predicate logic; proof-writing strategies such as direct, contradiction, and induction; summations and recurrences; elementary asymptotics and timing analysis; and counting…
A survey of the fundamental mathematical tools used in computer engineering: sets, relations, and functions; propositional and predicate logic; proof writing strategies, such as direct, contradiction and induction; summations and recurrences; counting and discrete probability; undirected and…
The theory of computing, including finite automata, regular expressions and languages, context-free grammars and languages, push-down automata, pumping lemmas, the Chomsky hierarchy of language classes, Turing machines and computability, undecidability of the halting problem, reducibilities…
The design, analysis, and implementation of data structures and their associated algorithms; Lists; Stacks; Queues and Priority Queues; Trees; Graphs and Dictionaries; Time and Space Complexity; Sorting and Searching; Advanced problem-solving, and Algorithm Design Strategies.
…
The design and implementation of data structures. Comparative analysis of algorithms and their applications to solving data science problems. Topics include recursion, lists, stacks, queues and priority queues, trees, graphs, dictionaries, decision trees, disjoint set, tensors, and data frames…
Introduction to social and ethical issues relating to computer science and information technology. Topics include privacy, intellectual property, open source software, the digital divide, globalization, professional ethics, social justice issues, and current events. Students should have a…
Honors introduction to social and ethical issues relating to computer science and information technology. Topics include privacy, intellectual property, open source software, the digital divide, globalization, professional ethics, social justice issues, and current events. Students should have a…
A rigorous overview of methods for text mining, image processing, and scientific computing. Core concepts in supervised and unsupervised analytics, dimensionality reduction, and data visualization will be explored in depth.
Full cycle of a software system development effort, including requirements definition, system analysis, design, implementation, and testing. Special emphasis is placed on system analysis and design. The design phase includes development of a user interface. A large term project incorporates the…
Introduction to software development for mobile devices, such as smartphones and tablets. Topics include life cycle of mobile applications, mobile UI design, views, widgets, location and maps, local data handling, and interaction with Web services and databases. Students design, implement, and…
An introduction to the application of programming methodology to the production of computer and video games, including user education, algorithms, display methods, and sound. This course will begin with two-dimensional games using available standard program libraries.
GPUs are high-performance many-core processors. Students will learn massively parallel programming using CUDA C and develop parallel algorithms to solve real problems. Topics include parallel computing, GPUs architecture, threads, performance issues, and floating point representation.
Not…
Numerical methods and computing. Topics include: computer arithmetic; numerical solutions of nonlinear equations; polynomial interpolation; numerical differentiation and integration; numerical solutions of systems of linear equations, initial and boundary value problems, systems of ordinary…
Computationally oriented, covering a wide range of topics that are necessary for numerical simulation in science and engineering. Sequential and parallel numerical methods will be introduced. Available symbolic and numerical software packages (e.g., Matlab, Maple and MPI) and visualization tools…
An introduction to implementing computational-based trading strategies from information gathering to market ordering and trading, including probabilistic machine-learning approaches to situational analysis and to trading decisions. We consider approaches like linear regression, decision trees, K…
The modeling and simulation of existing or planned systems for the purpose of studying their correctness, reliability, or performance. Topics to be addressed include discrete-event simulation, continuous simulation, analysis and modeling methodologies, animation, virtual reality, and Web-based…
Basic concepts of computer security and the theory and current practices of authentication, authorization, and privacy mechanisms in modern operating systems and networks.
Examination of security and privacy issues related to protecting personal data in various environments (for example: cloud computing, smart grid, and internet of things) cover the fundamentals and principles of data security and privacy, and computational and statistical techniques for…
The principles and practice of computer forensics. Topics include computer crime, software vulnerabilities, intellectual property, privacy issues, countermeasures, methods and standards for extraction, preservation, and deposition of legal evidence in a court of law.
Client-side and server-side techniques for use on the World Wide Web. Interactive, dynamically-generated, and database -enabled web pages are discussed. Course content changes frequently to incorporate new Internet technologies.
The application of artificial intelligence methodologies and algorithms to problems involving the world wide web. Introduction to problem-solving, knowledge representation, learning, and reasoning techniques and exploration of how they are applied to enable information provisioning, social…
Provides intermediate to advanced understanding of the use of Internet, World Wide Web, and network computing (including Java) technologies for management (search, access, integration, presentation) of multimedia information. Topics discussed include key techniques, tools and technologies for…
An introduction to advanced analytics techniques in data science, including random forests, semi-supervised learning, spectral analytics, randomized algorithms, and just-in-time compilers. Distributed and out-of-core processing.
Offered every year.
The theory and practice of database management. Topics to be covered include efficient file access techniques, the relational data model as well as other data models, query languages, database design using entity-relationship diagrams and normalization theory, query optimization, and…
A broad introduction to data mining methods and an exploration of research problems in data mining and its applications in complex real-world domains. Approaches include association and classification rule learning, tree learning, neural network and Bayesian methods, support vector machines,…
Algorithms, covering basic analysis techniques, basic design techniques (divide-and-conquer, dynamic programming, greedy), basic and advanced graph algorithms, and NP -completeness theory.
Application of discrete algorithms to computational problems in molecular biology. Topics are drawn from such areas as classical sequence comparison, multiple sequence alignment, DNA sequence assembly, DNA physical mapping, genome rearrangement, evolutionary tree construction, and protein…
Several modern programming languages and the paradigm -- procedural programming, object-oriented programming, functional programming, and logic programming -- that each strives to accommodate. Projects involve at least three languages.
The functional programming paradigm: functions and types, type inference and polymorphism, higher order functions and recursion, evaluation strategies, abstract data types and modules, lists, trees, and lazy data structures, reasoning about functional programs.
Not offered on a regular…
Introduction to hardware and software involved in autonomous mobile robotics. Course content emphasizes the mathematical and statistical models related to robotic perception and motion, associated algorithms, and their programming in computer-simulated environments. Course structure involves…
Programming in LISP and PROLOG, with emphasis on artificial intelligence techniques. Other languages used for artificial intelligence work will be presented more briefly.
An introduction to the fundamental concepts in computer science, including algorithms and logic, and the theoretical foundations in philosophy that define the field of artificial intelligence.
The artificial intelligence approach to modeling cognitive processes. Topics include an…
An in-depth introduction to evolutionary computation methods and an exploration of research problems in evolutionary computation and its applications which may lead to work on a project or a dissertation.
Design and implementation of compilers for high-level programming languages. Topics include all phases of a typical compiler, including scanning, parsing, semantic analysis, intermediate code generation, code optimization, and code generation. Students design and develop a compiler for a small…
Reinforcement learning studies methods for learning to act optimally based on the reward or punishment over time. Such machine learning is useful when we wish to learn high-quality behavior under uncertainty and the only data are reward signals. Introduces classical and modern methods in single…
An introduction to quantum computation.
In recent years, computer scientists and physicists have begun to discuss the possibility of a computer whose hardware utilizes quantum phenomena. There has developed a notion of a quantum algorithm, and examples are known of computational problems…
Basic counting principles: permutations, combinations, probability, occupancy problems, and binomial coefficients. More sophisticated methods include generating functions, recurrence relations, inclusion/exclusion principle, and the pigeonhole principle. Additional topics include asymptotic…
Elementary theory of graphs and digraphs. Topics include connectivity, reconstruction, trees, Euler's problem, hamiltonicity, network flows, planarity, node and edge colorings, tournaments, matchings, and extremal graphs. A number of algorithms and applications are included.
Offered…
Design and analysis of the structure and function of modern computing systems. Topics studied include combinational and sequential logic, number systems and computer arithmetic, hardware design and organization of CPU, I/O systems and memory systems, instruction set and assembly language design…
Coverage of the key concepts in modern operating systems. Specific topics include process management, synchronization mechanisms, scheduling strategies, deadlock detection/avoidance, memory management, file systems, protection and security, and distributed systems. Concepts will be reinforced…
Basic concepts of real-time systems with an emphasis on scheduling issues. Consideration of both offline and online scheduling. Online schedules will include static and dynamic priority systems, with and without allowing preemption. Also, consideration of resource sharing and multiprocessor…
In-depth coverage of computer networks, including: digital data transmission and encoding, layered protocol models, Internet protocol, Internet client-server software, and network design methodology.
Introduces the technologies required to develop mobile and ubiquitous computing applications, including communication protocols, naming and location management, replication and consistency management, security and privacy, content adaptation, and battery power management.
The fundamental concepts in distributed computing and the practical techniques for building distributed systems. Topics include distributed computing models, naming, synchronization, replication and consistency, fault tolerance, and security. Widely deployed distributed systems are used as case…
Introduction to cloud computing for undergraduate and graduate students. Topics include virtualization, data centers, virtual machines, cloud service models, public vs. private vs. hybrid clouds, open stack, container and orchestration infrastructure, cloud storage, mobile cloud, IoT, and big…
Issues in the design, development, and evaluation of user interfaces for computer systems. Concepts in human factors, usability, and interface design, and the effects of human capabilities and limitations on interaction with computer systems.
Principles of two-dimensional and three-dimensional interactive graphics. Principles of scan conversion algorithms for two-dimensional and three-dimensional graphics primitives; image data structures and modeling techniques; visual realism, data storage/retrieval, compression, parallel computing…
Introduction to the technology and techniques used in virtual environments (also known as virtual reality). Students will gain knowledge about the latest innovations in this field, will understand the important research issues and methodologies for VEs, and will have the opportunity to gain…
Brings together computer science, machine learning, and computer vision analysis techniques. Introduces basic programming concepts within the context of scientific discovery and applying those concepts to current problems in biology using the Python ecosystem.
Introduction to signal processing. Students will learn basic concepts, algorithms, and software tools for multidimensional signal representation, processing and analysis. 1-D, 2-D, 3-D, and 4-D signal processing techniques and applications will be discussed.
Not offered on a regular basis…
This course introduces standard approaches to biomedical analysis, including basic concepts of biomedical imaging, basic algorithms, principles of software systems, and their applications. Biomedical analysis software tools will be used in hands-on projects.
Various advanced topics in computer science.
Computer Science design project experience under the supervision of a project director.
Computer Science design experience, including completion of a design project under the supervision of a project director.
Engineering design experience, including completion of a design project under the supervision of a project director.
Content will vary in response to the interests, needs, and capability of the students and faculty involved. Individual, guided study in computer science.
Required Forms: Independent Study/Internship Form
An individual student or team of students will define the research question, the research methods, or in some cases both aspects…
Faculty-supervised independent or collaborative inquiry into fundamental and applied problems within a discipline that requires students to gather, analyze, synthesize, and interpret data and to present results in writing and other relevant communication formats.
These courses belong to a…
Provides an exposure to advanced methods and technologies in data science, including data acquisition, data quality, big data management and analytics, data mining, data security and privacy, and introduces the students to data science experience with a real-world problem. In addition, effective…
Faculty-supervised independent or collaborative inquiry into fundamental and applied problems within a discipline that requires students to gather, analyze, synthesize, and interpret data. Students will write or produce a thesis or other professional capstone product, such as a report or…
Internship in a professional setting allowing the student to integrate his/her educational experience with real-world situations in software development, database technology, hardware design, networks, etc.
This course/program fulfills the Experiential Learning Requirements for students…
Web site design from a technical viewpoint. Covers applicable network protocols; HTML, CSS, XML, and JavaScript; Web standards and cross-browser compatibility issues; code development and debugging techniques; server-side scripting; database-driven Web applications; navigation and usability…
See if and when courses are offered in a given semester via our downloadable course schedule.
Spring 2025
Fall 2024
Spring 2024
Fall 2023
We appreciate your financial support. Your gift is important to us and helps support critical opportunities for students and faculty alike, including lectures, travel support, and any number of educational events that augment the classroom experience. Click here to learn more about giving.
Every dollar given has a direct impact upon our students and faculty.