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 220  |  Client Web Programming  |  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, or CSCI 241 or MIS 221; or B+ or better in CSCI 105; or consent of instructor.

Offered: Fall.

Meets: Natural Science: CSCI

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 275  |  Linux Concepts, Tools and Scripting  |  2 cr

Examines concepts and tools for Linux including file system organization, text processing, Linux processes, editors, and interacting with internet host systems. Investigates Linux shells and the environment, scripting languages, input/output, functions, and start-up scripts. One hour lecture, one and one half hour lab.

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

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  |  Server Web Programming  |  3 cr

Examines 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. Multi-career cross-listing: 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. Multi-career cross-listing: CIS 524.

Prerequisites: CSCI 242 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. Multi-career cross-listing: CIS 540.

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. Multi-career cross-listing: CIS 570.

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. Community-based learning designation.

Prerequisites: CSCI 242 with C or better.

Offered: Fall.

Meets: Community Based Learning

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. Multi-career cross-listing: CIS 605.

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  |  Data Science Programming and Visualization  |  3 cr

Surveys common programming languages for data science with visualization. Explores the development of applications for data-centric software used to visualize and extract actionable knowledge and insights from a collection of heterogeneous data sources that answer specific scientific, socio-political, or business questions. Not open to those with credit in CIS 611. Multi-career cross-listing: CIS 611.

Prerequisites: CSCI 410 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. Multi-career cross-listing: CIS 612. 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. Multi-career cross-listing: CIS 613.

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

Offered: Occasionally.

CSCI 415  |  Data Science/Machine Learning Project  |  3 cr

Develops practical experience via a data science research project, including applying various machine learning models, researching concepts, and preparing research articles. Multi-career cross-listing: CIS 615. Not available for students with credit in: CIS 615.

Prerequisites: CSCI 410 or CSCI 405 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. Multi-career cross-listing: CIS 620.

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. Multi-career cross-listing: CIS 621.

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. Multi-career cross-listing: 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  |  Linux System Administration  |  3 cr

Covers Linux system administration concepts and techniques, including system organization, kernel configuration, device management, system files and runtime maintenance, software configuration and installation, and network configuration. Compares Linux with other operating systems. Two-hour lecture; two-hour lab. Multi-career cross-listing: CIS 635.

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. Multi-career cross-listing: CIS 640.

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. Multi-career cross-listing: CIS 644.

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. Multi-career cross-listing: CIS 645. Not available for students with credit in: CIS 645.

Prerequisites: CSCI 242 or CSCI 322 or MIS 328 with C or better; or instructor permission.

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. Multi-career cross-listing: CIS 669.

Prerequisites: CSCI 245.

Offered: Fall.

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

Introduces UML design and teamwork in the development of a larger software system. Covers UML use case, activity, class/object, interaction, and state diagrams in the creation of efficient designs and systems. Multi-career cross-listing: CIS 675.

Prerequisites: C or better in CSCI 380 and one of the following: CSCI 323 or CSCI 324 or CSCI 333 or CSCI 340 or CSCI 370.

Offered: Fall.

Meets: Community Based Learning

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. Multi-career cross-listing: CIS 676.

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. Multi-career cross-listing: CIS 677.

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. Multi-career cross-listing: CIS 678.

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

Offered: Occasionally.

CSCI 479  |  Information Security Planning  |  3 cr

Introduces information security design. Considers technical, administrative, and physical aspects of IT security. Includes fraud, risk, information protection, business continuity, network security, auditing, secure software and privacy.

Prerequisites: C or better in CSCI 242 or MIS 328 or consent of instructor.

Offered: Spring.

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. Multi-career cross-listing: CIS 680.

Prerequisites: CSCI 380 with C or better.

Offered: Occasionally.

CSCI 481  |  Security Risk  |  3 cr

Focuses on risk analysis, including qualitative, quantitative, and ethical risk. Involves investigates an industry or topic of choice, delving into sources of risk information, researching regulation and statistics, and developing a comprehensive analysis of risk related to the selected topic. Multi-career cross-listing: CIS 681.

Prerequisites: A previous course in security and consent of instructor.

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.