Computer Science (CSCI)

CSCI 105  |  Introduction to Computers  |  3 cr

Explores computer components and the principles of operation; networking, the Internet and the World Wide Web; problem solving techniques, introduction to algorithms, elementary programming concepts.

Prerequisites: None.

Offered: Fall, Spring, Summer.

Meets: Natural Science: CSCI

CSCI 130  |  Introduction to Programming  |  3 cr

Fundamentals of high-level programming language: object-orientation, methods, functions, variables, program control.

Prerequisites: MATH 111 or equivalent.

Offered: Fall, Spring.

Meets: Natural Science: CSCI

CSCI 210  |  Mobile Device Interfaces  |  3 cr

Freq: Fall. Focuses on the fundamentals of interface design for mobile devices. Topics include input, output, organization, and human-computer interaction. Various tools are used to design and implement. Prerequisites: MATH 111 with a grade of C or better.

Prerequisites: MATH 111 with a grade of C or better.

Offered: Fall.

Meets: Natural Science: CSCI

CSCI 220  |  Web Concepts I  |  3 cr

Explains web client programming concepts, website authoring, dynamic web pages, object usage, events and event-driven programming, markup languages, document object model.

Prerequisites: C or better in CSCI 130, CSCI 241 or MIS 221; or consent of instructor.

Offered: Fall.

CSCI 231  |  Discrete Mathematics  |  3 cr

Covers sets; the number system; Boolean algebra; formal logic and proofs; relations and functions; combinatorics and recurrence relations; graphs and trees. Cross-listed with: MATH 231.

Prerequisites: MATH 112 with a C or better.

Offered: Fall, Spring.

CSCI 241  |  Computer Science I  |  5 cr

Introduces the fundamentals of software development; including software classes, objects, logic, selection control, repetition control, subprograms, parameter passage, and rudimentary software engineering techniques. Three-hour lecture; one-hour discussion; two-hour lab.

Prerequisites: C or better in MATH 112 and MATH 113, or MATH 114.

Offered: Fall, Spring.

Meets: Natural Science: CSCI

CSCI 242  |  Computer Science II  |  4 cr

Explores object-oriented programming concepts including inheritance and polymorphism; and recursion. Introduces data structures including: lists, stacks, queues, trees and maps; advanced sorting; and searching algorithms. Three-hour lecture, two-hour lab.

Prerequisites: CSCI 241with C or better.

Offered: Fall, Spring.

CSCI 245  |  Assembly Language Programming  |  3 cr

Explores organization of computers, digital representation of data, symbolic coding and assembler systems, instructions, addressing modes, program segmentation and linkage, and applications.

Prerequisites: C or better in CSCI 231, CSCI 241; CSCI 242 or concurrent registration.

Offered: Fall, Spring.

CSCI 274  |  UNIX Concepts and Tools  |  1 cr

Examines concepts and tools for UNIX including file system organization, directory and file manipulation, text processing, UNIX processes, editors, interacting with other users, and interacting with internet host systems. One hour lecture, one and one half hour lab.

Prerequisites: C or better in CSCI 130, CSCI 241; or MIS 221, or concurrent registration.

Offered: Fall.

CSCI 275  |  UNIX Scripting  |  1 cr

nvestigates UNIX shells, shell variables and the environment, scripting languages, input and output, control structures, argument handling, functions, parameter passing and start-up scripts. One hour lecture, one and one half hour lab.

Prerequisites: CSCI 274 with C or better.

Offered: Fall.

CSCI 279  |  Basic Information Security  |  3 cr

Provides an overview of information security planning. Evaluates security threats, regulations and controls affecting various business types. Students select an industry that is specific to their career goals and consider the threats and controls appropriate for that industry.

Prerequisites: None.

Offered: Occasionally.

Meets: Social & Behavioral Science: CSCI

CSCI 290  |  Special Topics in Computer Science  |  1-4 cr

Elementary topics in computer science.

Prerequisites: Consent of instructor.

Offered: Occasionally.

CSCI 291  |  Makerspace Seminar  |  1 cr

Requires independent work in a community-operated workspace where students with common interests develop technology related projects.

Prerequisites: None.

Offered: Occasionally.

CSCI 309  |  Probability and Statistics  |  3 cr

Covers elementary probability, random variables, properties of distributions, sampling, queuing theory, central limit theorem and law of large numbers. Cross-listed with: MATH 309.

Prerequisites: MATH 221 with C or better.

Offered: Spring.

CSCI 322  |  Web Concepts II  |  3 cr

Explains server-side programming concepts including server architectures, relational databases and database connectivity; dynamic web pages; form processing and web services.

Prerequisites: CSCI 220 or consent of instructor.

Offered: Spring.

CSCI 323  |  Mobile Development in Android  |  3 cr

Examines existing tools, environments and programming languages for developing applications for mobile devices on the Android platform. Explores current research on mobile applications and future trends. Cross-listed with: CIS 523.

Prerequisites: CSCI 242 with C or better, or consent of instructor.

Offered: Fall.

CSCI 324  |  Mobile Development in iOS  |  3 cr

Examines existing tools, environments and programming languages for developing applications for mobile devices on the iOS platform. Explores current research on mobile applications and future trends. Cross-listed with: CIS 524.

Prerequisites: CSCI 323 with C or better, or consent of instructor.

Offered: Spring.

CSCI 333  |  Programming Languages  |  3 cr

Introduces syntax and semantic issues in programming languages and their effect on language implementation. Includes methods to specify languages, data storage, and the sequence of control in programs. Examines non-procedural languages, including functional and logic languages.

Prerequisites: C or better in CSCI 231 and CSCI 242.

Offered: Spring.

CSCI 340  |  Data Structures and Algorithm Design  |  3 cr

Study of the design, implementation and analysis of computer algorithms; time and space requirements for sorting, searching, graph theory, mathematics and string processing algorithms.

Prerequisites: C or better in CSCI 231 or MATH 231 and in CSCI 242.

Offered: Spring.

CSCI 355  |  Computer Architecture  |  3 cr

The design of computer systems and components. Processor design, control structures and micro-programming; cache, memory hierarchies, mass memory, and memory management; buses, interrupts and I/O structures; multiprocessors and advanced processors.

Prerequisites: CSCI 245 with C or better.

Offered: Spring.

CSCI 368  |  Mathematical Modeling  |  3 cr

Surveys mathematical models, models involving differential equations, probabilistic models, Markovian-models, simulation, and Monte Carlo methods. Cross-listed with: MATH 368.

Prerequisites: MATH 222; PHYS 241 or CSCI 130; or consent of instructor.

Offered: Yearly.

CSCI 370  |  Operating Systems  |  3 cr

Operating system concepts, process definition and implementation, deadlock, memory management and protection, distributed system architecture, and case studies.

Prerequisites: C or better in CSCI 242 and CSCI 355.

Offered: Fall.

CSCI 380  |  Database Management Systems  |  3 cr

Examines the relational model, database design, relational database query languages such as Relational Algebra and SQL, database normalization techniques, physical database design.

Prerequisites: CSCI 242 with C or better.

Offered: Fall.

CSCI 405  |  Artificial Intelligence  |  3 cr

Introduces Artificial Intelligence (AI) techniques that include search, game playing, and knowledge representation. Includes specific subdisciplines of AI such as natural language processing and neural networks. Programming assignments in both Prolog and LISP.

Prerequisites: CSCI 333 with C or better.

Offered: Occasionally.

CSCI 410  |  Introduction to Data Science  |  3 cr

Introduces extraction of knowledge from data. Covers basics of statistical inference and the identification of probability distributions commonly used as foundations for statistical modeling. Provides an overview of commonly used data science software tools. Not open to students with credit in CIS 610.

Prerequisites: CSCI 242; and CSCI 309 or QM 310; or consent of instructor.

Offered: Fall.

CSCI 411  |  Programming for Data Science  |  3 cr

Surveys common programming languages for data science. Explores the development of applications for data-centric software used to extract actionable knowledge and insights from heterogeneous data sources that answer specific scientific, socio-political, or business questions. Not open to students with credit in CIS 611.

Prerequisites: CSCI 410 or CIS 610 or consent of instructor.

Offered: Spring.

CSCI 412  |  Data Mining and Machine Learning  |  3 cr

Explores data mining methods and procedures for diagnostic and predictive analytics. Includes association rules, clustering algorithms, tools for classification, and ensemble methods. Emphasizes computer implementation and applications. Not open to those with credit in CIS 612.

Prerequisites: CSCI 410 or CIS 610 or consent of instructor.

Offered: Occasionally.

CSCI 413  |  Big Data Analysis  |  3 cr

Introduces the efficient processing of large data sets, including non-relational databases and algorithms that allow for the distributed processing of large data sets across clusters. Not open to those with credit in CIS 613.

Prerequisites: CSCI 410 or CIS 610 or consent of instructor.

Offered: Occasionally.

CSCI 420  |  Computer Graphics  |  3 cr

Graphics hardware and software, techniques for representation and visualization, two- and three-dimensional transformations, concepts and techniques of visual realism.

Prerequisites: CSCI 340 with C or better.

Offered: Occasionally.

CSCI 421  |  Computer Vision  |  3 cr

Reviews algebra of matrices and partial differentiation. Introduction to Machine Vision and Image Processing including image formation, thresholding, image filtering, edge detection, image segmentation, image data compression, image similarity and dynamic vision.

Prerequisites: CSCI 242 with a grade of C or better.

Offered: Occasionally.

CSCI 424  |  Client/Server Development  |  3 cr

Explores server-side application programming concepts. Includes server architectures, communication protocols, relational databases and database connectivity, dynamic content delivery and communication security. Cross-listed with: CIS 674.

Prerequisites: CSCI 324 with C or better, or consent of instructor.

Offered: Fall.

CSCI 431  |  Computational Models  |  3 cr

Delves into regular languages, finite automata, context-free languages and grammars, push-down automata, Turing machines, algorithms and the Church-Turing thesis, and decidability.

Prerequisites: CSCI 231 or MATH 231 with a C or better.

Offered: Occasionally.

CSCI 433  |  Web Development Project  |  3 cr

Focuses on project-based development of a significant web site or a specific web-based problem or project under the supervision of the instructor. Includes project management techniques, client-server communication and content management systems.

Prerequisites: CSCI 322 or consent of instructor.

Offered: Occasionally.

CSCI 435  |  UNIX System Administration  |  3 cr

Covers UNIX system administration concepts and techniques including system organization, kernel configuration, device management, system files and runtime maintenance, software configuration and installation, and network configuration; comparison of UNIX with other operating systems. Two-hour lecture; two-hour lab.

Prerequisites: CSCI 275 with C or better.

Offered: Spring.

CSCI 440  |  Compiler Design and Implementation  |  3 cr

Theory, design and implementation of compilers and other syntax-directed systems. Applies techniques of finite state machines, lexical analysis, symbol tables, parsing, storage allocation and code generation to the development of a compiler. Laboratory work included.

Prerequisites: C or better in CSCI 333 or concurrent registration.

Offered: Occasionally.

CSCI 444  |  Event-Driven Programming  |  3 cr

Origins of events; the event-driven programming model; interrupt processing as event handling; client-server architectures; windowing environments and GUI programming; development support software; case studies; and student project.

Prerequisites: C or better in CSCI 370.

Offered: Occasionally.

CSCI 445  |  Web Application Security  |  3 cr

Explores vulnerabilities and defenses of web-based software systems. Covers web architecture, document security, authentication and attacks and defenses of client-side controls, authentication, session management, access controls, data stores and back-end components. Cross-listed with: CIS 645.

Prerequisites: CSCI 242 or CSCI 322 with C or better.

Offered: Summer.

CSCI 467  |  Computability and Automation  |  3 cr

Turing machines, recursive functions, Kleene's T Predicate, Ackermann's function, finite automata, grammars and languages.

Cross-listed with: MATH 467.

Prerequisites: C or better in MATH 331 or CSCI 331 or consent of instructor.

Offered: Occasionally.

CSCI 469  |  Embedded Systems Design  |  3 cr

Covers firmware and hardware development. Includes assembly and/or C programming of micro-controllers, interrupt processing, basic hardware and logic design, programming micro-controller peripherals like Analag/Digital Converters (ADC & DAC), timers, Pulse Width Modulation (PWM), comparators, programming and using serial interfaces, basics of printed boards design.

Prerequisites: CSCI 245.

Offered: Fall.

CSCI 475  |  Software Engineering Principles and Practice I  |  3 cr

An introduction to UML design and teamwork in the development of a larger software system. The use of UML use case, activity, class/object, interaction, and state diagrams in the creation of efficient designs and systems.

Prerequisites: C or better in CSCI 333, CSCI 340, CSCI 370 or CSCI 380.

Offered: Fall.

CSCI 476  |  Software Engineering Principles and Practice II  |  3 cr

Continuation of CSCI 475; further work on a significant team project; includes oral presentations and written documentation.

Prerequisites: CSCI 475 with C or better.

Offered: Spring.

CSCI 477  |  Computer Communications and Networks  |  3 cr

Examines transmission protocols, layered network protocols, network topology, message routing, performance analysis, security, and case studies.

Prerequisites: C or better in CSCI 242 and in CSCI 245.

Offered: Occasionally.

CSCI 478  |  Network Security  |  3 cr

Examines computer and network security related to operating systems, networks and system administration issues, including hacking, incident response, firewalls, VPNs, intrusion detection, and auditing. A background in computer networking is helpful.

Prerequisites: C or better in one of: CSCI 355, 435, 477 or MIS 327.

Offered: Occasionally.

CSCI 480  |  Advanced Databases  |  3 cr

Review of relational database languages such as SQL and Relational Algebra, and query optimization techniques. Non-relational database models including object-oriented databases, XML databases, and deductive databases. Data mining, transaction management, concurrency control, text retrieval, and Web data management.

Prerequisites: CSCI 380 with C or better.

Offered: Occasionally.

CSCI 490  |  Special Topics In Computer Science  |  1-4 cr

Advanced topics in computer science with applications. May repeat for credit with different topic.

Prerequisites: Consent of instructor.

Offered: Occasionally.

CSCI 493  |  Internship  |  1-2 cr

Participation in the technical activities of an ongoing organization under the joint guidance and supervision of a member of the organization and member of the faculty. Grading will be on a credit/no-credit basis. A student may register and receive credit in this course for a maximum of 6 credits.

Prerequisites: Consent of instructor and department chair.

Offered: Fall, Spring.

CSCI 495  |  Computer Science Seminar  |  2 cr

Examines computer ethics, the computing profession, current trends in information technology, and career opportunities. Includes oral presentations.

Prerequisites: Any 300-level computer science course or consent of instructor.

Offered: Fall.

CSCI 499  |  Independent Study  |  1-3 cr

Independent work on a specific problem in computer science under the supervision of faculty.

Prerequisites: Consent of instructor and department chair.

Offered: Fall, Spring.