Computer Science (CSCI)

CSCI 100 Computers In Our Society3 Credits

The 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

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 majors outside the scientific disciplines. "Subtitle" indicates language of implementation.

Prerequisites: MATH 110 or MATH 113 (either may be taken concurrently) or permission of instructor.

CSCI 110L Beginning Programming Laboratory1 Credit

An optional laboratory course to be taken as a co-requisite to CSCI 110. This lab is intended for those students currently enrolled in CSCI 110 who have little or no previous programming/computer experience. The student taking this course will complete several computer assignments designed to increase the student's knowledge of programming, debugging, and program design. "Subtitle" indicates language of implementation.

Prerequisites: MATH 113 or permission of instructor.

Corequisites: CSCI 110.

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, control structures, I/O, and functions.

Prerequisites: CSCI 110 or MATH 113.

CSCI 112 CS2: Data Structures4 Credits

Continuation of CSCI 111 with emphasis on algorithm design and analysis, procedural abstraction, data abstraction, and quality programming style. Topics covered include distinction between dynamic and static variables; various implementations of elementary stacks, queues, trees and lists; comparison of recursive and iterative algorithms; program correctness; and hierarchical design principles. Programming exercises will focus on modularity of design and data abstraction.

Prerequisites: CSCI 111 or CSCI 130.

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 Topics1-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.

Prerequisites: CSCI 112.

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 305 Technology for Mathematics Educators3 Credits

Project- and activity-based introduction to technology resources appropriate for use by elementary mathematics educators. Focus will be on spreadsheets--programming, modeling, and data manipulation--supplemented with topics chosen from interactive geometry software, interactive applets, simple webpage design, educational simulations and games, and other mathematical technology tools.

Prerequisites: MATH 113 and MATH 301.

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 Programming:1-3 Credits

Exploration of a higher level programming language for CSCI/CISB majors. Specifics will vary with the language covered.

Prerequisites: CSCI 111 or CSCI 110 or CSCI 130.

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 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 400.

CSCI 375 Object Oriented Programming3 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.

Prerequisites: CSCI 250.

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 Topics1-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 Cyber Security3 Credits

Exploration of various common security flaws in programs and systems written in C and C++ programming languages. Topics include Linux commands, shell scripting, C, Buffer overflow, exploits, Man in the Middle attacks, and red and blue team exercises. Students will learn how to find various vulnerabilities such as buffer overflow and write simple exploits to take advantages of the vulnerabilities.

Prerequisites: CSCI 241 and CSCI 370.

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 Theory of Algorithms3 Credits

Techniques for analyzing time and space requirements of computer algorithms. Models are set up for analysis and techniques are applied to algorithms related to sorting and searching, pattern-matching, graph problems and other selected problems. The notion of NP-hard problems is introduced and related problems are discussed.

Prerequisites: MATH 152 and CSCI 250.

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

Topics include: 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. Instructors may choose to implement a sample network in which case the contents may be particularized to that network.

Prerequisites: STAT 200.

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 250 and CSCI 330.

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 Topics1-3 Credits

Course may be taken multiple times up to maximum of 15 credit hours.