Compilers take input programs written in a high-level language and generate equivalent programs in a low-level language. This course introduces the mathematical tools (formal languages and automata) necessary for recognizing and validating input programs and the computational techniques used to construct equivalent output programs. Students develop first-hand experience with the process by implementing a sample compiler as a course project. The tools and techniques introduced in this course can be applied across a wide range of applications.
CSCI 456 | Operating Systems
One the most complex software systems ever assembled, the modern operating system serves as the interface between humans and the hardware they use. This course examines how the simple goal of resource sharing gives rise to some of the most challenging problems and significant breakthroughs in computer science. Topics include process and thread management, input/output, CPU scheduling, synchronization, memory management, and virtual memory. Students learn to navigate the intricacies of low-level programming, parallelism, and synchronization.
CSCI 462 | Senior Project
A practical computer software development experience to incorporate topics learned in advanced computer science courses with the tools and techniques for software development studied in the software engineering class. Students may enroll in either the one-semester, one-unit 460 or the two-semester, 0.5 unit per semester sequence, but not both.
CSCI 461 | Senior Project
A practical computer software development experience to incorporate topics learned in advanced computer science courses with the tools and techniques for software development studied in the software engineering class. Students may enroll in either the one-semester, one-unit 460 or the two-semester, 0.5 unit per semester sequence, but not both.
CSCI 460 | Senior Project
A practical computer software development experience to incorporate topics learned in advanced computer science courses with the tools and techniques for software development studied in the software engineering class. Students may enroll in either the one-semester, one-unit 460 or the two-semester, 0.5 unit per semester sequence, but not both.
CSCI 360 | Principles of Database Systems
The management of data has been a central challenge throughout the history of computing. This course focuses on the core concepts and theory behind relational database systems. The relational data model is a framework designed to address longstanding issues in data management such as data independence, consistency, information loss, and performance. Topics include the relational model, relational algebra and SQL, relational database theory, schema design through normalization, query execution, hashing and indexing, and other factors that influence system performance.
CSCI 499 | Capstone in Computer Science
The senior capstone course provides computer science majors the opportunity to integrate the knowledge that they have gained from across the curriculum. Students are encouraged to work in teams, and can pursue either an applied or theory project. Students choosing applied projects participate in the identification of a problem, develop a project proposal outlining an approach to the problem's solution, implement the proposed solution, and test or evaluate the result.
CSCI 470 | Introduction to Artificial Intelligence
This course introduces the student to the techniques of artificial intelligence. Students learn strategies for uninformed and informed (heuristic) search, knowledge representation, problem-solving, and machine learning. Additional topics may include motion planning, games, modern neural networks, large language models, and philosophical implications.
CSCI 480 | Advanced Topics in Computer Science
The topics are chosen each time the course is offered to meet the interests of students and instructors. Possible topics include computer architecture, computer modeling and simulation, networks, advanced graphics, and advanced artificial intelligence.
CSCI 432 | Theory of Computation
An introduction to formal models of computers and computation. Topics include formal languages and automata theory, computability, decidability, and Church's Thesis.
Pagination
- Previous page
- Page 2
- Next page