Computer Science (CSCI)

CSCI-1300 Essential Information Technology
Description
Introduction to computers and technology in an academic environment, including critical analysis regarding the nature of information itself. Computing hardware, software, files, and formats. Text processing and quantitative analysis. Information management. Graphics, image processing, and visualization. Communication, networking, and the internet. Information ethics, privacy, and legal use of software and data. Solution of problems in these areas with emphasis on information literacy. No credit after completion of CSCI 1321.
Credits
3 credits
Level
Lower Division
Pathways:
The Capacities | Digital Literacy
CSCI-1304 Computers and Society
Description
An examination of the impact of computer technology on issues of society and culture. The course will contain several components: an introduction to computing (software and hardware concepts); an introduction to problem-solving using one or more high-level languages/software applications to include information retrieval and processing (numeric, text, and graphics); computer communications; and discussions of the uses and ethical issues surrounding computers in our society. No credit after completion of CSCI 1300, 1320 or 1321.
Credits
3 credits
Level
Lower Division
Pathways:
The Capacities | Digital Literacy
CSCI-1311 Introduction to Programming Logic
Description
Introduction to the basics of computer programming and algorithmic thinking for non-science majors. The course focuses on the logic and problem decomposition skills that are critical for understanding computation. Use of a high-level programming language will stress creativity in problem solving using computation, and impart a hands-on understanding of the process of programming. The course will cover many of the most important concepts in programming and computer science, including choice, repetition, and abstraction. No prior experience in programming is necessary. This course assumes familiarity with high school algebra, geometry, and trigonometry.
Credits
3 credits
Level
Lower Division
Pathways:
The Capacities | Digital Literacy
The Interdisciplinary Clusters | Technology and Society
CSCI-1312 Introduction to Programming for Engineering
Description
Introduction to programming and algorithmic thinking, taught using tools that emphasize an understanding of the hardware. Top-down design and analysis of algorithms. Computer organization and data representation. Computer programming solutions to several laboratory exercises.
Credits
3 credits
Level
Lower Division
Pathways:
The Capacities | Digital Literacy
The Interdisciplinary Clusters | Technology and Society
CSCI-1320 Principles of Computer Science I
Description
Intended for Computer Science majors and others who need this specific course to meet requirements in other departments. The course is a concept-­-oriented introduction to programming and algorithmic problem solving principles. Topics include top-­-down design; searching and sorting strategies; recursion; computational complexity and analysis of algorithms; and the limits of computation. Aspects of computer organization; computer solutions to problems in graphics, user interfaces, and file manipulation. Computer programming solutions to several laboratory exercises. Prerequisites: First-­-Year or Sophomore standing; or consent of instructor.
Credits
3 credits
Level
Lower Division
Pathways:
The Capacities | Digital Literacy
CSCI-1321 Principles of Computer Science II
Description
Focus on object-oriented programming and the development of software to solve larger problems that can benefit from this approach. Abstraction, polymorphism, multithreading, and networking. Program correctness and program verification, algorithm analysis, and computational complexity. User defined structures, data types. Abstract data types including stacks, queues, linked lists, trees, and heaps. Computer programming solutions to several laboratory exercises. Prerequisite: CSCI 1320 or consent of instructor.
Credits
3 credits
Level
Lower Division
Pathways:
The Interdisciplinary Clusters | Technology and Society
CSCI-1323 Discrete Structures
Description
Elements of discrete mathematics of particular importance in computer science: propositional and predicate logic; proof techniques, including mathematical induction; recursive functions, definitions, and algorithms; proofs of program correctness; algebra of sets; relations and functions; and elements of the theory of directed and undirected graphs. Application of these structures to various areas of computer science. Prerequisite: One of CSCI 1311, CSCI 1312, CSCI 1320, or consent of instructor.
Credits
3 credits
Level
Lower Division
Pathways:
Approaches to Creation and Analysis | Quantitative Disciplines
CSCI-2094 Computer Science Colloquium
Description
Departmental Colloquium on research, professional issues, ethics, and other topics.
Credits
0 credits
Level
Lower Division
CSCI-2195 Competitive Programming
Description
Approaches to algorithmic problem solving; practice with problems that are commonly found in programming competitions. Focuses on the languages and tools used in the annual ACM International Collegiate Programming Competition. May be taken a maximum of four (4) semester hours of credit. Prerequisite: CSCI 1320 or knowledge of programming
Credits
1 credit
Level
Lower Division
CSCI-2320 Principles of Data Abstraction
Description
Abstract data types and their implementation in an object-oriented environment. Axiomatic systems describing the classical computer science data structures: stacks, queues, lists, trees, graphs, and the like. Analysis of the computational complexity of alternative implementation strategies in the context of the typical algorithmic applications. Prerequisite: CSCI 1321 and 1120
Credits
3 credits
Level
Lower Division
CSCI-2321 Principles of Computer Design
Description
A study of computer organization and design including emphasis on logical design, the role of performance, the structure of instructions, computer arithmetic, processor control, and methods of performance enhancement. Some attention will also be given to assembly programming. Prerequisite: CSCI 1321,CSCI 1120.
Credits
3 credits
Level
Lower Division
CSCI-2322 Principles of Functional Languages
Description
An introduction to functional programming. Functional composition, recursion, and iteration. Procedure and data abstraction using functions. Managing state, streams, delayed evaluation, and continuations. Using functional languages as an analytic notation for reasoning about programs. Solution of several laboratory problems.
Credits
3 credits
Level
Lower Division
CSCI-2323 Scientific Computing
Description
Numerical and text processing methods with problems chosen from the sciences and mathematics. Focuses on the general idea of how computational science has expanded the realm of what is possible in the sciences. Builds on basic programming knowledge to give students understanding and skills as to how computers are used in the sciences. Prerequisite: CSCI 1320, MATH 1311.
Credits
3 credits
Level
Lower Division
CSCI-2324 Numerical Calculus
Description
Introduction to the numerical algorithms fundamental to scientific computer work. Elementary error analysis, interpolation, quadrature, linear systems of equations, and introduction to the numerical solution of ordinary differential equations. (Also listed as MATH 2324.) Prerequisites: CSCI 1320, MATH 1311.
Credits
3 credits
Level
Lower Division
CSCI-3090 Directed Study
Description
Credit will vary depending on work done. Prerequisites: CSCI 1323, 2320, and Junior standing
Credits
0 credits
Level
Upper Division
CSCI-3094 Seminar
Description
Topics will vary depending on student interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisites: CSCI 1323, 2320, and junior standing.
Credits
0 credits
Level
Upper Division
CSCI-3190 Directed Study
Description
Credit will vary depending on work done. Prerequisites: CSCI 1323, 2320, and Junior standing
Credits
1 credit
Level
Upper Division
CSCI-3193 Special Topics in Theory
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6)semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
1 credit
Level
Upper Division
CSCI-3194 Seminar
Description
Topics will vary depending on student interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisites: CSCI 1323, 2320, and junior standing.
Credits
1 credit
Level
Upper Division
CSCI-3195 Special Topics in Applications
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6)semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
1 credit
Level
Upper Division
CSCI-3196 Special Topics Systems
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
1 credit
Level
Upper Division
CSCI-3197 Special Topics in Design
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisites: CSCI 1321 and 1323, or consent of Instructor; CSCI 3321 is recommended
Credits
1 credit
Level
Upper Division
CSCI-3215 Advanced Unix Command-Line Tools
Description
Beyond the basics of traditional UNIX/Linux command-line tools. Topics typically include basic shell features, shell scripting, the UNIX "make" utility, LaTeX, text editors, regular expressions, and simple commands for text processing, as well as how these tools interoperate and can be used together to accomplish things that would be tedious to do without them. Students are encouraged to reflect on how this ecosystem of tools compares to that of mainstream GUI-based tools. (Offered every other year.) Prerequisite: CSCI 1320, or consent of instructor.
Credits
2 credits
Level
Upper Division
CSCI-3290 Directed Study
Description
Credit will vary depending on work done. Prerequisites: CSCI 1323, 2320, and Junior standing
Credits
2 credits
Level
Upper Division
CSCI-3293 Special Topics in Theory
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6)semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
2 credits
Level
Upper Division
CSCI-3294 Seminar
Description
Topics will vary depending on student interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisites: CSCI 1323, 2320, and junior standing.
Credits
2 credits
Level
Upper Division
CSCI-3295 Special Topics in Applications
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6)semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
2 credits
Level
Upper Division
CSCI-3296 Special Topics Systems
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
2 credits
Level
Upper Division
CSCI-3297 Special Topics in Design
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisites: CSCI 1321 and 1323, or consent of Instructor; CSCI 3321 is recommended
Credits
2 credits
Level
Upper Division
CSCI-3311 Information Assurance and Security
Description
A contemporary introduction to the broad area of security in computing systems, exploring issues that abound when attempting to secure information in an interconnected society. An information- based examination of risk modeling, assessment and management; ethics; policies and behaviors; cryptography; code security; data security; operating system security; and network security. Approaches to assure information confidentiality, integrity, and availability(CIA). Prerequisite: CSCI 1321 or BAT 2302
Credits
3 credits
Level
Upper Division
CSCI-3312 Introduction to Game Development
Description
An introduction to the various aspects of the computer game creation process including coding, game play, narrative development, and artwork. Students will explore the tools and methods of game design and will also work in groups to design and implement a two-dimensional, non-networked game. Prerequisite: CSCI 2320, 3321 is recommended.
Credits
3 credits
Level
Upper Division
CSCI-3320 Principles of Theoretical Computer Science
Description
Core topics from finite automata, languages and the theory of computation. The Chomsky hierarchy, abstract machines and their associated grammars. Models of computation (e.g., Turing machines), Church's thesis, unsolvability, and undecidability. Computational complexity, intractability, and NP-completeness. Prerequisites: CSCI 1323
Credits
3 credits
Level
Upper Division
CSCI-3321 Principles of Software Engineering
Description
Issues involved in developing large-scale software systems. Models for the software lifecycle; techniques and tools of analysis, design, programming, testing, debugging, and maintenance. May include formal methods, CASE, expert systems, case studies. Prerequisites: CSCI 2320, 1323, and Junior standing.
Credits
3 credits
Level
Upper Division
Pathways:
The Capacities | Oral and Visual Communication
CSCI-3322 Principles of Algorithms
Description
Exploration of standard algorithm construction methods for solving varied problems including a comparison of the different efficiencies of these algorithms when implemented using different data structures. Methods will include branch and bound, backtracking, memoization, greedy algorithms, and dynamic programming. Heuristic-based methods to find non-optimal solutions are also explored, especially for intractable problems. Prerequisite: CSCI 2320
Credits
3 credits
Level
Upper Division
CSCI-3323 Principles of Operating Systems
Description
Introduction to operating systems. Role and purpose of operating systems. History of operating systems. Processes and process management, including a discussion of concurrency and related issues. Memory management. Input/output and device management. File systems. Operating system security. Prerequisite: CSCI 2321.
Credits
3 credits
Level
Upper Division
CSCI-3334 Compiler Construction
Description
This course introduces students to the practical issues that arise in compiling programs from a source language to a target language. Topics include register allocation, parsing, intermediate representations, and the basics of code optimization. Compiler construction requires finding always-correct and approximately-optimal solutions for intractable problems, and involves the application of theoretical computer science to practical programs. The course exposes the lowlevel details that underlie many basic programming abstractions, such as variables, homogenous computer memory and compositional programming languages. (Offered occasionally.) Prerequisites: CSCI-2321
Credits
3 credits
Level
Upper Division
CSCI-3342 Computer & Network Security
Description
This course will cover the techniques used to secure cyber and network systems. Topics covered will include security policies, computer security management and risk assessment, secured network protocols, software security issues, ethical and legal aspects of cybersecurity, and disaster recovery. Special emphasis will be given to designing, deploying, and managing complete secured cyber systems. Prerequisite: CSCI 2320
Credits
3 credits
Level
Upper Division
CSCI-3343 Database Systems
Description
The goals of DBMS including data independence, relationships, logical and physical organizations, schema and subschema. Entity relationship diagrams. Hierarchical, network, and relations models. Data definition and data manipulation languages. Query languages, relational algebra, and relational calculus. Data normalization techniques, data security integrity, and recovery. Case studies of several existing systems. Prerequisite: CSCI 2320.
Credits
3 credits
Level
Upper Division
CSCI-3344 Artificial Intelligence
Description
The purpose of this course is to update the student on state-of-the-art artificial intelligence concepts, such as heuristic programming, state-space search techniques, and/or graphs for problem solving, game playing techniques, theorem proving procedures for propositions and first-order logic, knowledge representation, and examples of knowledge-based systems. Prerequisites: CSCI 1323, 2320.
Credits
3 credits
Level
Upper Division
CSCI-3345 Web Application Design
Description
An introduction to the development of Web applications and cloud computing. Basics of information sharing on the web and an introduction to a standard Web application framework. Students will work in groups to analyze, design, and implement a Web application. Prerequisites: CSCI 1321, 3321 is recommended
Credits
3 credits
Level
Upper Division
CSCI-3351 Numerical Analysis I
Description
Methods of solution of algebraic and transcendental equations, simultaneous linear algebraic equations, numerical integration and differentiation, initial and boundary value problems or ordinary differential equations. (Also listed as MATH 3351.) Prerequisites: CSCI 1321, MATH 3316.
Credits
3 credits
Level
Upper Division
CSCI-3353 Graphics
Description
Survey of display devices, display data structures, graphics input, 2D transformations, windowing, clipping, viewing, 3D transformations, perspective, depth, hidden line removal. Graphics programming techniques and several laboratory problems using available graphics devices. Prerequisites: MATH 1311, CSCI 2320.
Credits
3 credits
Level
Upper Division
CSCI-3354 Big Data and Machine Learning
Description
This course explores the field of big data computation and machine learning using appropriate frameworks for processing large datasets across clusters of computers. Students will learn the mathematical underpinnings of a variety of machine learning models and use machine learning to do predictive analysis on various datasets. (Offered every fall.) Prerequisites: CSCI 1321 and MATH 2308
Credits
3 credits
Level
Upper Division
CSCI-3361 Analysis of Algorithms
Description
Complexity of algorithms, time and space requirements, and trade-offs. Searching and sorting, mathematical algorithms, graph and combinational algorithms. Divide and conquer, branch and bound, dynamic programming, exhaustive search. Limitations, intractability and NP-completeness, approximation algorithms. Prerequisites: CSCI 1321, 1323.
Credits
3 credits
Level
Upper Division
CSCI-3362 Effective Programming Techniques
Description
Effective strategies for programming in contemporary languages, including material on design patterns and other techniques that improve abstraction and reusability of code. Includes a significant group project that requires students to apply material learned in the course. Prerequisite: CSCI 2320, 3321 is recommended
Credits
3 credits
Level
Upper Division
CSCI-3366 Parallel and Distributed Programming
Description
An introduction to parallel and distributed programming with particular emphasis on algorithm development. Comparison between sequential and parallel algorithm development. Survey of hardware and software for parallel and distributed computing. Comparison of different architectures and programming models. Design, analysis, and development of parallel algorithms. Students will be expected to implement several projects in one or more suitable parallel programming environments. Prerequisites: CSCI 2320
Credits
3 credits
Level
Upper Division
CSCI-3368 Principles of Programming Languages
Description
An introduction to the syntax and semantics of programming languages. This will include a study of data structures and control structures, proof of programs, a comparison of functional and imperative programming languages, parameter passing, storage allocation schemes, and concurrent language features. Prerequisite: CSCI 2322.
Credits
3 credits
Level
Upper Division
CSCI-3390 Directed Study
Description
Credit will vary depending on work done. Prerequisites: CSCI 1323, 2320, and Junior standing
Credits
3 credits
Level
Upper Division
CSCI-3393 Special Topics in Theory
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6)semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
3 credits
Level
Upper Division
CSCI-3394 Seminar
Description
Topics will vary depending on student interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisites: CSCI 1323, 2320, and junior standing.
Credits
3 credits
Level
Upper Division
CSCI-3395 Special Topics in Applications
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6)semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
3 credits
Level
Upper Division
CSCI-3396 Special Topics Systems
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisite: CSCI 1321 and 1323, or consent of instructor.
Credits
3 credits
Level
Upper Division
CSCI-3397 Special Topics in Design
Description
Topics will vary depending on student and faculty interest. May be taken for a maximum of six (6) semester hours of credit. Prerequisites: CSCI 1321 and 1323, or consent of Instructor; CSCI 3321 is recommended
Credits
3 credits
Level
Upper Division
CSCI-3398 Thesis Reading
Description
Independent study in selected areas in preparation for Thesis. Spring. Prerequisites: Junior standing, CSCI 1323 and CSCI 2320 and Consent of Instructor.
Credits
3 credits
Level
Upper Division
CSCI-3490 Directed Study
Description
Credit will vary depending on work done. Prerequisites: CSCI 1323, 2320, and Junior standing
Credits
4 credits
Level
Upper Division
CSCI-3590 Directed Study
Description
Credit will vary depending on work done. Prerequisites: CSCI 1323, 2320, and Junior standing
Credits
5 credits
Level
Upper Division
CSCI-3690 Directed Study
Description
Credit will vary depending on work done. Prerequisites: CSCI 1323, 2320, and Junior standing
Credits
6 credits
Level
Upper Division
CSCI-4312 Advanced Game Development
Description
A deeper exploration of the concepts presented in CSCI 3312 that provides a setting for students to work in groups on the design and implementation of a three-dimensional or networked game. Includes discussion of 3-D graphics options as well as networking options. Groups will be subdivided into coding, game play, and art subgroups and will work in a structure intended to model professional game studios. Prerequisite: CSCI 3312
Credits
3 credits
Level
Upper Division
CSCI-4353 Advanced Graphics
Description
Geometric modeling, algorithms for hidden surface removal, shading models, rendering, texture mapping, reflectance mapping, ray tracing, and radiosity. Introduction to animation. Several laboratory programming problems using available graphics devices. Prerequisite: CSCI 3353.
Credits
3 credits
Level
Upper Division
CSCI-4365 Advanced Theoretical Computer Science
Description
Advanced topics in theory. Closure properties, ambiguity, contact-sensitive and recursively enumerable languages, alternate models of computation, non-determinism, decidability, Ackermann's function, computational complexity speed-up. Prerequisite: CSCI 3320.
Credits
3 credits
Level
Upper Division
CSCI-4385 Senior Software Project I
Description
The analysis and design of an actual large-scale software system. Application of the analysis and design tools within the software life cycle presented in CSCI 3321 (Principles of Software Engineering). Students work in teams under direct supervision of the faculty. Prerequisite: 21 hours of Computer Science
Credits
3 credits
Level
Upper Division
CSCI-4386 Senior Software Project II
Description
The implementation, testing, and maintenance of the large-scale software systems designed in CSCI 4385. Students working in teams under direct supervision of faculty implement and demonstrate the deliverable software package. Prerequisite: CSCI 4385.
Credits
3 credits
Level
Upper Division
CSCI-4398 Thesis I
Description
Individual research and scholarly investigation under faculty supervision leading to the preparation of a senior thesis. To be taken only by students committed to the preparation of a thesis and those who wish to earn the Honors in Computer Science designation. Serves as a part of the departmental capstone requirement. Fall. Prerequisite: CSCI 3398 and Consent of Instructor.
Credits
3 credits
Level
Upper Division
CSCI-4399 Thesis II
Description
Continuation of CSCI 4398. Must be taken by students who desire honors in computer science. Serves as a part of the departmental capstone requirement. Thesis presentation to departmental faculty and students and a separate thesis defense are requirements for the completion of this course. Prerequisite: CSCI 4398 and Consent of Instructor.
Credits
3 credits
Level
Upper Division
Pathways:
The Capacities | Written Communication
Headshot of Yu Zhang
Yu Zhang, Ph.D.
Department Chair
Professor
" "
Debra Bradley
Part-Time Faculty
Seth Fogarty
Seth Fogarty, Ph.D.
Associate Professor
headshot of Matthew Hibbs_2022
Matthew Hibbs, Ph.D.
Associate Professor
Britton Horn
Britton Horn, Ph.D.
Assistant Professor
" "
Connie McCollum
Part-Time Faculty
Paul Myers
Paul Myers, Ph.D.
Caruth Distinguished Professor of Computer Science
" "
Richard Ongkiko
Part-Time Faculty
Sheng Tan
Sheng Tan, Ph.D.
Assistant Professor
" "
Eva Tuba
Assistant Professor

Contact Us


 Department website


 Yu Zhang, Ph.D. (Chair)


 

Discover More

From the Department of Computer Science.

 Courses


 Degrees​​​​​​


We're here to help!

Our team of expert academic advisers are ready to provide guidance and support.

Visit the Advising Office