Computer Science (CSCI)
CSCI 100 Computers In Our Society3 Credits
Impact of computers on society and individuals; purpose and use of software integrated systems. Intended for students in disciplines outside the natural sciences and mathematics.
Essential Learning Categories: Social and Behavioral Sciences
Terms Typically Offered: Fall, Spring.
CSCI 104 Intro to Computer Hardware1 Credit
Computer hardware introduction. Includes purchase, maintenance and repair of computer hardware (desktops, laptops, servers and mobile devices, wired and wireless network hardware) in individual and corporate settings.
CSCI 106 Web Page Design I3 Credits
Aspects of web page design such as HTML, web servers, web graphics/sound/video, and programs that automate the design of web sites and scripts. Students will progressively develop their own sites throughout the term using software tools and concepts presented in the class.
Terms Typically Offered: Fall, Spring.
CSCI 110 Beginning Programming3 Credits
Introduction to computer programming. Includes syntax and semantics for sequential, selection, and repetition structures, program design and modularization, simple and structured data types, and file I/O. Designed for students with no programming experience or majors outside of Computer Science.
Prerequisites: MATH 110 or higher (may be taken concurrently).
Terms Typically Offered: Fall, Spring.
CSCI 110L Beginning Programming Laboratory1 Credit
Optional laboratory course to be taken as a co-requisite to CSCI 110 to enhance knowledge of computer programming. Includes syntax and semantics for sequential, selection, and repetition structures, program design and modularization, simple and structured data types, and file I/O. Designed for students with no programming experience or majors outside of Computer Science.
Prerequisites: MATH 110 or higher (may be taken concurrently).
Corequisites: CSCI 110.
Terms Typically Offered: Fall, Spring.
CSCI 111 CS1: Foundations of Computer Science4 Credits
Introduction to problem solving techniques with emphasis on modularity, abstraction, analysis, and correctness of algorithm design. Using C/C++ language as a tool. Topics covered include data types, version control, Makefile, control structures, I/O, pointers, dynamic memory, functions, unit testing, debugging, structs.
Prerequisites: CSCI 110 or MATH 113 or MATH 119A.
Terms Typically Offered: Fall, Spring.
CSCI 112 CS2: Data Structures4 Credits
Continuation of CSCI 111 using C++. Emphasis on algorithm design analysis, procedural abstraction, data abstraction, data structures, and quality programming style. Topics include the distinction between dynamic and static variables; various implementations of elementary stacks, queues, trees, and lists; comparison of recursive and iterative algorithms; program correctness; version control; and hierarchical design principles.
Prerequisites: CSCI 111 or CSCI 130.
Terms Typically Offered: Fall, Spring.
CSCI 130 Introduction to Engineering Computer Science4 Credits
Introduction to fundamental programming concepts for engineers using a systems language and a scripting language. Programming concepts include flow control, data types and pointers. Applications include signal processing and numerical methods.
Prerequisites: MATH 135 (may be taken concurrently) or MATH 151 (may be taken concurrently).
CSCI 196 Topics:1-3 Credits
Course may be taken multiple times up to maximum of 15 credit hours.
CSCI 206 Web Page Design II3 Credits
Exploration of the technologies for creating websites. Topics include using JavaScript, HTML, and CSS in the creation of functional websites while developing relevant skills. Continuation of CSCI 106.
Prerequisites: CSCI 106.
Terms Typically Offered: Spring.
CSCI 241 Computer Architecture and Assembly Language4 Credits
Architecture of a representative processor and its assembly language; register transfers and sequence control; realization of fetch, address, branch and execute cycles; start, stop and reset the computer; interrupt and memory mapped input-output; and peripherals and interfacing.
Prerequisites: CSCI 112.
Terms Typically Offered: Fall, Spring.
CSCI 250 CS3: Introduction to Algorithms3 Credits
Complexity analysis and program performance. Abstract data types such as lists, trees, stacks and queues; sorting; searching and hashing; classic algorithmic strategies, including brute force, greedy, divide and conquer; space-time tradeoff; limitations of algorithm power; and optimization strategies.
Prerequisites: CSCI 112; and MATH 151 (may be taken concurrently).
Terms Typically Offered: Fall, Spring.
CSCI 260 Introduction to Database3 Credits
Introduction to using databases. The focus of this course will be on the creation, retrieval, update, and deletion of data from databases using a variety of database management systems and programming languages.
Prerequisites: CSCI 110, CSCI 111, or CSCI 130.
Terms Typically Offered: Fall, Spring.
CSCI 296 Topics1-3 Credits
Course may be taken multiple times up to maximum of 15 credit hours.
CSCI 306 Web Page Design III3 Credits
Exploration of website management issues, server-side scripting, web server security, and database interactions. Skills associated with technologies for web servers and databases will be developed. Continuation of CSCI 206.
Prerequisites: CSCI 206.
Terms Typically Offered: Fall.
CSCI 310 Advanced Programming1-3 Credits
Exploration of higher-level programming languages and advanced concepts for CSCI majors. Specifics will vary with the language covered.
Prerequisites: CSCI 250 and MATH 151.
Terms Typically Offered: Fall, Spring.
Course may be taken 4 times for credit.
CSCI 321 Assembly Language Programming3 Credits
Introduction to assembler, creating and executing assembly language program, organization of machine under study, data definition, addressing techniques, data movement instruction, branching instructions, flag and PSW registers, arithmetic instructions, macros and their implementation, hardware and software interrupts, storing instructions, typical applications.
Prerequisites: CSCI 241.
CSCI 322 Embedded Systems3 Credits
Introduction to design of embedded systems. Skills associated with software development and debugging will be developed. Course uses modern system design platforms to create custom embedded firmware. Students will compare custom solutions to those involving the application of existing tools to control external peripherals, such as lights, sensors, and screens.
Prerequisites: CSCI 241; or CSCI 112 and ENGR 140.
Equivalent Course(s): EECE 337
Terms Typically Offered: Fall.
CSCI 330 Programming Languages3 Credits
Principles and concepts that characterize various classes of high-level computer programming languages. Topics will include syntax and semantic issues, data types/classes, control structures, binding, and storage allocation.
Prerequisites: CSCI 250.
Terms Typically Offered: Fall, Spring.
CSCI 333 UNIX Operating Systems3 Credits
Introduction to systems programming with UNIX. Topics covered include elementary and advanced user commands, file handling, process control, library routines, device drivers, shell programming, and UNIX utilities.
Prerequisites: CSCI 112 or knowledge of C++/C.
CSCI 337 User Interface Design3 Credits
Examination of user interface design (UID) principles. They include rules of perception, systems analysis, user analysis, good design principles, and testing and evaluation of designs. Using an appropriate Rapid Application Development tool, students will design a major project emphasizing UID concepts.
Prerequisites: CSCI 250 or CSCI 260.
CSCI 345 Video Game Design3 Credits
Exploration of game engine and development theory. Emphasis is on rendering, physics simulation, artificial intelligence, and optimization techniques used in the modern game construction. Students will develop at least three games during the semester.
Prerequisites: CSCI 112.
CSCI 360 Robotic Perception and Planning3 Credits
Examination of autonomous robotic system preceptors (sensors), actuators, and planner (control system) design architecture. Analysis of a variety of robotic control architectures and signal data analysis leading to design and build of small autonomous robots to meet challenging work environments and goals. Proficient industrial machine control language programmers and control system design professionals developed. Field related ethics explored.
Prerequisites: CSCI 111 or CSCI 130.
Terms Typically Offered: Spring.
CSCI 365 Data Mining3 Credits
Exploration of fundamental tools and techniques for data analysis. Transforming data into information with various programming languages. Instruction in modern techniques for data analytics, future research directions.
Prerequisites: CSCI 112; and STAT 200 or STAT 215.
Terms Typically Offered: Fall.
CSCI 370 Computer Security3 Credits
Networked-computer security, suitable for both CS and CIS majors. Topics include security framework, access control and site security, firewalls, attack methods, elements of cryptography and cryptographic systems, incidence response, security in e-commerce and e-mail, management and policy decisions for security.
Prerequisites: CSCI 250 or CISB 311.
Terms Typically Offered: Fall.
CSCI 375 Object Oriented Programming and Design Patterns3 Credits
Advanced programming techniques using the object-oriented paradigm, with emphasis on abstractness of design, encapsulation, inheritance, and polymorphism. Additional topics include design tools and methodologies for determining classes, responsibilities, collaborations, and hierarchies. Software engineering concepts such as design patterns, tools such as version control, and unittesting object-oriented programs are also introduced.
Prerequisites: CSCI 250.
Terms Typically Offered: Fall, Spring.
CSCI 380 Operations Research3 Credits
Methods of linear and dynamic programming, inventory and replacement models, queuing theory, game theory, PERT, CPM, and simulation.
Prerequisites: MATH 152, STAT 200, and CSCI 111.
CSCI 393 Internship1-3 Credits
The internship course provides the student with the opportunity to apply classroom theory to on-the-job experiences. During the internship course, the student will work at approved professional positions related to the computer science field. The student will be required to write and fulfill course objectives with the approval of the internship coordinator.
Prerequisites: Junior standing, written permission of internship coordinator.
Course may be taken multiple times up to maximum of 15 credit hours.
CSCI 395 Independent Study1-3 Credits
Course may be taken multiple times up to maximum of 6 credit hours.
CSCI 396 Topics:1-3 Credits
Course may be taken multiple times up to maximum of 15 credit hours.
CSCI 405 Mobile Application Development3 Credits
Application development on mobile platforms, such as smartphones and tablets. Topics include understanding hardware, application API's, marketplaces, and programming languages for these platforms.
Prerequisites: CSCI 250, CSCI 337 or CSCI 206, or permission of instructor.
CSCI 420 Software Security3 Credits
Exploration of various common security flaws in software and systems written in C/C++ programming languages. Topics include Linux commands, Bash and Python scripting, Buffer overflow, exploits, and CTFs exercises. Students will learn to find flaws and write exploit code to take advantage of the vulnerabilities as well as various mitigation techniques.
Prerequisites: CSCI 370.
Terms Typically Offered: Spring.
CSCI 425 Python Machine Learning3 Credits
Introduction to machine learning with an applied approach. Students are introduced to essential data science tools and frameworks. Traditional classification, regression, and clustering machine learning algorithms such as decision trees, support vector machines, k-means, ensemble, boosting, and bagging techniques are introduced using real-world datasets, applications, and deployment.
Prerequisites: CSCI 112; and one of the following: STAT 200, STAT 215, STAT 241, or CISB 241.
Terms Typically Offered: Spring.
CSCI 445 Computer Graphics3 Credits
Introduction to the use of the computer to produce images, including: two and three dimensional graphics, algorithms and data structures for hidden lines and surfaces, shading, and reflections.
Prerequisites: MATH 152 and CSCI 250.
Terms Typically Offered: Fall.
CSCI 450 Compiler Structure3 Credits
Structures and techniques used in compiler writing, with emphasis on scanners, symbol tables, parsers, and code generation. Error analysis and code optimization are discussed.
Prerequisites: CSCI 241 and CSCI 330 (may be taken concurrently).
Terms Typically Offered: Fall.
CSCI 460 Database Design3 Credits
Design and implementation of relational databases. Approaches and methods of design and normalization, SQL, integrity, and security will be discussed.
Prerequisites: CSCI 250.
CSCI 465 Network/Application Security3 Credits
Exploration of advanced topics in network and web-based application security, such as network exploitations and mitigations; using common network utility tools and building new tools programmatically; most common web application security flaws; browser and database security principles; and authentication and authorization in web applications.
Prerequisites: CSCI 420.
Terms Typically Offered: Fall.
CSCI 470 Operating Systems Design3 Credits
Aspects of computer operating system design and implementation including memory management, processor management, device management, information management, and performance evaluation methods.
Prerequisites: CSCI 250 and CSCI 241.
Terms Typically Offered: Fall, Spring.
CSCI 480 Algorithms: Design and Analysis3 Credits
Theoretical and applied techniques to reason about and prove properties of algorithms. Topics include: algorithm correctness and running time, how data structures can provide space-efficient ways to quickly answer queries about data, and how data structures can be used to build efficient algorithms. The notion of computability is explored in depth, and related problems are discussed.
Prerequisites: CSCI 250; and MATH 152 or MATH 369 (MATH 369 is highly recommended).
Terms Typically Offered: Fall, Spring.
CSCI 482 Theory of Computation3 Credits
Computability and automata theory introduced. Regular expressions, finite and pushdown automata, Turing machines, grammars and their relationship to automata, Church-Turing hypothesis, incomputable and undecidable functions and equivalence of computability models are covered.
Prerequisites: MATH 369 and CSCI 250.
CSCI 484 Computer Networks3 Credits
Survey of computer networks, including hardware technology for local and long haul networks, circuit and packet switching, interface between computer and network hardware, network architectures and protocols, routing, congestion and flow problems, queuing theory, and reliability issues.
Prerequisites: CSCI 112.
Terms Typically Offered: Fall, Spring.
CSCI 486 Artificial Intelligence3 Credits
Introduction to artificial intelligence programming with study of topics such as knowledge representation, expert systems, solution space search, non-deterministic algorithms (neural nets, genetic algorithms), etc. Programs will be written in a selected AI programming language such as Lisp or Prolog.
Prerequisites: CSCI 250; and MATH 151 or MATH 135.
CSCI 490 Software Engineering3 Credits
Exploration of the philosophy of software engineering. Software project planning, requirement analysis, software system design and strategies, software design tools, program and system testing, system maintenance, and economics are examined.
Prerequisites: CSCI 260 and CSCI 375.
Terms Typically Offered: Fall, Spring.
CSCI 494 Seminar1-3 Credits
Discussions of specialized topics by students, faculty, or visiting professors. One or two one-hour meetings per week.
Course may be taken 10 times for credit.
CSCI 495 Independent Study1-3 Credits
Course may be taken multiple times up to maximum of 6 credit hours.
CSCI 496 Topics:1-3 Credits
Course may be taken multiple times up to maximum of 15 credit hours.