Academic Catalog

Computer Science (CSCI)

CSCI 101:  4 s.h.  
Problem Solving with Computers  (G2)  

Designed to introduce concepts, techniques and history of computing to students who are not computer science majors. Emphasis on problem solving using the computer, including making calculations and presenting reports, tables and graphs based on those calculations. Collecting, storing, updating and retrieving data. Display and interpretation of information using the Internet. No credit toward computer science major.

CSCI 121:  4 s.h.  
Intro to Web Programming  (G2)  

Designed to introduce web programming to students who are not computer science majors. Topics include web-page design, scripting languages, graphics animation, image handling, event handling, document object model and graphical interface control objects. No credit toward computer science major. Offered periodically.

CSCI 140:  4 s.h.  
Discrete Structures  

Discrete mathematical structures and their application to computer science including formal mathematical notation and proofs, algorithms, computer related arithmetic, propositional logic, predicate logic, set theory, graphs, relations and databases, functions, matrices and combinatorics. Prereq: Placement in MATH 151 or higher.

CSCI 151:  4 s.h.  
Intro to Programming for Data Science I  (G2)  

Introduction to computer programming for the student not intending to major in computer science or related fields. Emphasis on learning to develop programs in an appropriate programming language (currently Python) to manipulate and analyze data from domains such as science, business, engineering, and the humanities. Pre or Co-req: MATH 130 or MATH 234 or MATH 235 or MATH 333 or ECON 231 or GEOG 292 or CHEM 265 or BIOL 375. 4 s.h.

CSCI 152:  4 s.h.  
Intro to Programming for Data Science II  (G2)  

Continuation of CSCI 151 covering more advanced computer programming techniques with an emphasis on developing programs to manipulate and analyze real-world data from various domains including business, science, and the humanities. Topics include creating appropriate data visualizations, acquiring data from numerous sources, analyzing and cleaning data sets, drawing advanced conclusions from data and the ethics of data collection and analysis. Current language used is Python. Pre-req: C or higher in CSCI 151 or B or higher in CSCI 161 and C- or higher in MATH 130 or MATH 234 or MATH 235 or MATH 333 or ECON 231 or GEOG 292 or CHEM 265 or BIOL 375. 4 s.h.

CSCI 161:  4 s.h.  
Introduction to Programming 1  (G2)  

Introduction to computer programming for the student intending to major in computer science or related fields. Emphasis on developing ability to apply problem-solving strategies to design and implement algorithms in a modern programming language. Prereq: Placement in MATH 151 or higher.

CSCI 162:  4 s.h.  
Introduction to Programming 2  (G2)  

Continuation of CSCI 161 covering advanced computer programming techniques. Emphasis on object-oriented programming, specification, design, elementary data structures, and proper use of programming language and development tools. Abstract data types, classes and objects, recursion, linked lists, queues, stacks and binary trees. Prereq: C or higher in CSCI 161 or B or higher in CSCI 151.

CSCI 179:  3,4 s.h.  
Experimental  

Experimental

CSCI 279:  3 s.h.  
Experimental  

Experimental

CSCI 300:  1-12 s.h.  
Co-Op Ed Experience in CSCI  

Co-Op Ed Experience in CSCI

CSCI 330:  4 s.h.  
Programming Languages  

Introduction to the fundamental principles of programming language design, semantics, and implementation. Structure and vocabulary of modern programming languages. Programming language topics include formal semantics of programming, name binding, scope, data types, type systems, control flow, object orientation, scripting languages, functional languages, polymorphism, and concurrency. Labs and assignments will include experience in writing programs in a nonprocedural programming paradigm. Pre- or co-requisite: CSCI 362

CSCI 340:  4 s.h.  
Computational Models  

Introduction to theory of computation. Topics include finite state automata, regular languages and grammars, pushdown automata, context-free languages and grammars, Turing machines, limits on algorithmic computation. Offered in spring. Prereq: C- or higher in CSCI 140, 162.

CSCI 350:  3 s.h.  
Cognitive Science  (P)  

Basic introduction to cognitive science. Reviews attempts to understand cognition using insights from psychology, artificial intelligence, philosophy, linguistics and the neurosciences. Examines the synthesis of those attempts in the emergent field of cognitive science. Offered periodically. Prereq: COMM 100, ENGL 110, junior status. No credit given if credit earned in PSYC/CSCI 314.

CSCI 362:  4 s.h.  
Data Structures  

Abstract data types, objects, algorithm design and analysis, trees, graphs, sorting and searching. Emphasis on ADT-based and object-oriented design, incremental development and testing, and comparison of data structure implementations. Prereq: C- or higher in CSCI 140 and CSCI 162.

CSCI 366:  4 s.h.  
Database Systems  

Introduction to building database-driven applications. Topics include data modeling, building databases, database queries, basic data management, Model View Controller design paradigm, basic database-driven application development, and non-relational database systems. Pre-req: C- or higher in CSCI 152 or 162 and CSCI 140 or MATH 120.

CSCI 370:  4 s.h.  
Computer Architecture  

Structure of digital computers including register transfer notation, instruction set architecture, computer arithmetic, pipelining and parallel processors. Offered in fall. Prereq: C- or higher in CSCI 140, 162.

CSCI 375:  4 s.h.  
Computer Graphics  

Theory and implementation of computer graphics. Explores each stage of the graphics pipeline through topics such as mathematical representations of positions and transformations, graphics primitives, 3D modeling, cameras, clipping, lighting, texturing, animation, and rasterization. Students build a graphics engine by iteratively replacing library code with their own work. Pre-req: MATH 304 and C- or higher in CSCI 362.

CSCI 379:  3 s.h.  
Experimental  

Experimental

CSCI 380:  4 s.h.  
Operating Systems  

Design and implementation of operating systems including types of operating systems, file systems, resource management, concurrent processes, deadlocks, memory management techniques, processor scheduling, disk scheduling, operating system security and system administration. Students expected to develop significant operating systems programming projects. Offered in fall, spring. Prereq: C- or higher in CSCI 362, 370.

CSCI 395:  4 s.h.  
Computer Networks  (W)  

Introduction to computer networks. Topics include network media, architecture and topology, protocols and layering, client-server models, Ethernet media and hardware, TCP/IP and other protocols, setup and system administration, application protocols and communication, network servers and services, security, data integrity, encryption, and firewalls. Offered periodically. Prereq: C- or higher in CSCI 362, ENGL 110.

CSCI 400:  3-12 s.h.  
Co-Op Ed Experience in CSCI  

Co-Op Ed Experience in CSCI

CSCI 406:  1-4 s.h.  
Topics in Computer Science  

This course allows students and faculty to explore various topics in computer science that are not included in other course offerings. CSCI 406 may be taken more than once for cedit with departmental approval. Offered periodically. Prereq: depends on topic to be studied.

CSCI 415:  4 s.h.  
Computer and Network Security  

This course is designed to introduce students to topics which include attacks, standards, data integrity, symmetric key encryption, public key encryption, authentication, electronic mail security, IP security, Web security, database security, secure electronic transactions, network manage- ment security, malicious software and firewalls. Offered periodically. Prereq: C- or higher in CSCI 362.

CSCI 419:  4 s.h.  
Mobile Device App Development  

This course will provide students with the skills necessary to design, develop, and deploy mobile device applications technology. Emphasis is placed on introducing students to the development environments, software and hardware limitations, and GUI development and event handling concepts when developing code to be executed on hand held devices. This course includes a laboratory component for example using Android/Java and IOS/iPhone/iPad Apps development environments. The successful student will learn the fundamental techniques for building mobile device apps including skills to write networked mobile apps that interact with remote services such as GPS, Bluetooth services, wireless hubs and devices, and web based client/server data systems. Pre-req: C- or higher in CSCI 362

CSCI 420:  4 s.h.  
Software Engineering  

Overview of software engineering concentrating on phases of the software development life cycle including agile software development processes, management, stories and features, specifications, architecture design (APIs, scalability, microservices), specification-based testing, coverage-based testing, and formal verification. Software management topics covered include source control, issue tracking, continuous integration, test automation, quality assurance, and code reviews. Pre-req: C- or higher in CSCI 330, 362 and 366

CSCI 421:  4 s.h.  
Web Application Development  

Introduction to building advanced web applications using modern approaches and technologies. Course covers development of responsive web applications using current industry-leading technology stacks and cloud-based services. Topics include asynchronous programming, an overview and use of cloud services, review of full stack technology, and development of real data-driven web applications. Pre-req: C- or higher in CSCI 362 and 366

CSCI 425:  4 s.h.  
Human-Computer Interaction  

Design, evaluation and implementation of interactive computing systems for human use including study of the major phenomena surrounding them. Presents a broad overview of the field with an emphasis on interface development and evaluation. Prereq: C- or higher in CSCI 362 required; CSCI 380 recommended.

CSCI 435:  4 s.h.  
Compiler Construction  

Students implement a compiler for a simplified modern programming language. Theory of compiler construction, including finite-state automata, LL(1) grammars and top-down parsing. Project includes lexical and syntax analysis, name storage, scope and type analysis, error recovery and code generation. Advanced topics covered as time permits, including LR(k) grammars, bottom-up parsing, compiler generators (e.g., LEX and YACC) and code optimization. Offered periodically. Prereq: C- or higher in CSCI 330, 340, 362.

CSCI 450:  4 s.h.  
Artificial Intelligence  (W)  

Introduction to artificial intelligence including problem solving, search, heuristic methods, machine learning, knowledge representation, natural language processing, computer vision, expert systems, theorem proving and current applications. Concepts illustrated through programs developed in LISP or Prolog. Offered periodically. Prereq: C- or higher in CSCI 362 and ENGL 110.

CSCI 452:  4 s.h.  
Data Mining  

An introduction to data mining, including data cleaning, the application of statistical and machine learning techniques to discover patterns in data, and the analysis of the quality and meaning of results. Machine learning topics may include algorithms for discovering association rules, classification, prediction, and clustering. Lab assignments provide practice applying specific techniques and analyzing results. An independent project provides students with the opportunity to guide a project from data selection and cleaning through to presentation of results. Pre-req: C- or higher in CSCI 366 and MATH 235 or 333 or 335.

CSCI 453:  4 s.h.  
Large-Scale Data Analytics and Visualization  

A practical introduction to data analytics, visualization, and blending theory. Students will learn about and apply various clustering algorithms and techniques for dealing with noisy data, use a distributed data analytics framework, complete laboratory assignments using version control, and enforce reproducibility by having all science easily sharable. Students will become familiar with modern data analytics methods and explore real-world data sets. Visualization of results will be a large component of the course through interactive and static frameworks. Pre-req: C- or higher in CSCI 366 and MATH 235 or 333 or 335.

CSCI 456:  4 s.h.  
Robotics and Computer Vision  

Intelligent robotic systems that deal with the physical world through visual, acoustic or tactile sensing. Fundamentals of robot vision, including image acquisition and camera geometry, pattern recognition, representation and analysis of shape, pixel neighborhoods, connectivity, distance measures, arithmetic operations on pixels and images, computations of area, centroid, moments, axis of least inertia, correlation techniques, histogram computation, manipulation of robot end effectors, robot task coordination and simple Cartesian robot manipulation. C- or higher in CSCI 362.

CSCI 467:  4 s.h.  
Analysis of Algorithms  

Theory and techniques of algorithm design and analysis. For design, students will study a variety of algorithmic solutions to problems from application areas including searching, selecting, sorting, graph theory, number theory and encryption. Design paradigms, including greedy method, divide and conquer, dynamic programming, backtracking and branch-and-bound. For analysis, students will use formal techniques to classify execution time of an algorithm. Software tools are used to measure resources used by a program during execution. Offered infrequently. Prereq: C- or higher in CSCI 340.

CSCI 475:  4 s.h.  
3D Game Prgmmg/Cmptr Animation  

Provide students with skills and solid technical foundation necessary to design, develop and deploy 3D games and related entertainment technology applications. Topics include 3D game programming, 3D graphics, game design, programming video game controllers, collision detection, force and motion calculations, networking multiplayer games, manipulating sound objects, physical modeling, projectiles, particle systems, physical constraints, deformation of virtual 3D objects, surface deformation, computer animation, forward and inverse kinematics, keyframe motion capture and procedural animation, and behavior-based animation and control. Offered periodically. Prereq: C- or higher in CSCI 362.

CSCI 476:  4 s.h.  
Parallel Programming  

Overview of parallel computing through study of parallel programming. Topics include message-passing, highly parallel computations, partitioning and divide-and-conquer strategies, pipelined and synchronous computations, load balancing and termination detection, programming with shared memory systems, parallel sorting algorithms, numerical algorithms, image processing, searching and optimization, and parallel programming using current technology. Offered periodically. Prereq: C- or higher in CSCI 362, 370.

CSCI 479:  3 s.h.  
Experimental  

Experimental

CSCI 489:  1-4 s.h.  
Honors Course  

Honors Course

CSCI 498:  1-4 s.h.  
Independent Study  

Independent study is available for well-qualified students. Students who receive approval for independent study are expected to complete a significant study or project in some area of computer science. A written report is required. Prereq: departmental permission.

CSCI 499:  1-4 s.h.  
Departmental Honors  

Departmental Honors

CSCI 501:  3 s.h.  
Coding for Educators  

This course is designed for k-12 teachers who have either little or no exposure to coding. Teachers will be guided to incorporate basic coding into their curriculum. This will include, introduction to computational thinking; hands-on HTML; hands-on/ unplugged coding activities; exposure and application to Scratch, Java, Python; and introduction to digital footprinting. Each teacher will create a take-home product that includes tools and coding activities that they can apply directly to their classes.

CSCI 579:  1-3 s.h.  
Experimental  

Experimental Graduate Course in Computer Science

CSCI 697:  3 s.h.  
Topics in Computer Science  

Topics in Computer Science