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.

Prerequisites: Familiarity with Windows.

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

A continuation of CSCI 106. Students will learn a scripting language and how to incorporate scripts in web page design.

Prerequisites: CSCI 106 or permission of instructor.

CSCI 241 Computer Architecture and Assembly Language4 Credits

Architecture of a representative processor and its assembly language, introduction to hardware description 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, peripherals and interfacing.

Prerequisites: CSCI 112.

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

Continuation of CSCI 206. Students will consider web site management issues, server-side scripting, security, and database interactions.

Prerequisites: CSCI 206 or permission of instructor.

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. Topics include: basic computer electronics, embedded digital communications, and embedded software design.

Prerequisites: CSCI 321.

CSCI 330 Programming Languages3 Credits

Principles and concepts which characterize various classes of high-level, computer programming languages are covered. Topics will include syntax and semantic issues, data types/classes, control structures, binding, and storage allocation.

Prerequisites: CSCI 250.

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 advantages of the vulnerabilities as well as various mitigation techniques.

Prerequisites: CSCI 241 and 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 365.

Terms Typically Offered: Spring.

CSCI 445 Computer Graphics3 Credits

Introduction to the use of the computer to produce images: two and three dimensional graphics, algorithms and data structures for hidden lines and surfaces, shading, and reflections.

Prerequisites: MATH 152 and CSCI 250.

CSCI 450 Compiler Structure3 Credits

Structures and techniques used in compiler writing are discussed with emphasis on scanners, symbol tables, parsers and code generation. The front end of a recursive descent parser is written for the semester project. Error analysis and code optimization are discussed as time permits.

Prerequisites: CSCI 241.

Corequisites: CSCI 330.

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 vulnerability management, network monitoring, intrusion detection and prevention, government and industry security compliances, wireless security, most common web application security flaws, browser and database security principles, and authentication and authorization in web applications.

Prerequisites: CSCI 420.

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. Some knowledge of C is required.

Prerequisites: CSCI 250 and CSCI 241.

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.

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.