Computer Science

Program Description

The Department of Computer Science develops graduates who can process information in digital computers, design computer hardware and software, and work successfully with several different computing applications. The Department offers the degree of Bachelor of Science in Computer Science. Within this degree, a student may choose one of five available emphasis areas in Business, Computer Engineering, Data Science, Research Honors, or Robotics and Intelligent Systems. 

BS in Computer Science

Computing is ubiquitous, impacting almost every aspect of modern life, and playing an important role in many technological advances. Computing jobs are among the highest paid, and computing professionals generally report high job satisfaction. Graduates from our program have found employment with many different types of companies including technology, engineering, and financial companies.

The CS degree at Mines is designed to be accessible to students with or without prior programming experience. The Introduction to Computer Science course introduces students to the building blocks of CS and provides a brief introduction to procedural programming in Python. The second computing course, Programming Concepts, emphasizes development of programming skills in an object-oriented language. The third introductory course, Data Structures, provides an understanding of the classic data representation schemes, algorithms, and algorithm analysis that form the foundation for all advanced work in computing.  

Required CS courses provide the fundamental skills and knowledge that are critical to success in computing. These courses reflect a mixture of theory and practice, including discrete structures, design and analysis of algorithms, principles of programming languages, computer architecture, operating systems, software engineering, and database management. The capstone field session course provides students an opportunity to work in teams to create software products for real clients.

Elective courses in CS allow students to explore a variety of important computing topics, such as graphics and visualization, human computer interaction, artificial intelligence, mobile applications, and web programming. Elective courses often relate to recent trends in computing, covering topics such as security, high performance computing, and wireless sensor networks.

Computing is a broad field with applicability to most science and engineering domains. The CS minor is designed for students in other disciplines to receive a solid grounding in the basics, which should enable them to apply their computing skills to solve problems in other domains.

PROGRAM EDUCATIONAL OBJECTIVES (BACHELOR OF SCIENCE IN COMPUTER SCIENCE)

In addition to contributing toward achieving the educational objectives described in the Mines' Graduate Profile, the Computer Science Program at Mines has established the following program educational objectives:

Students will demonstrate technical expertise within computer science by:

  • Designing and implementing solutions to practical problems in science and engineering,
  • Using appropriate technology as a tool to solve problems in computer science, and
  • Creating efficient algorithms and well-structured computer programs.

Students will demonstrate a breadth and depth of knowledge within computer science by:

  • Extending course material to solve original problems,
  • Applying knowledge of computer science to the solution of problems, and
  • Identifying, formulating and solving computer science problems.

Students will demonstrate an understanding and appreciation for the relationship of computer science to other fields by:

  • Applying computer science to solve problems in other fields,
  • Working in cooperative multidisciplinary teams, and
  • Choosing appropriate technology to solve problems in other disciplines.

Students will demonstrate an ability to communicate computer science effectively by:

  • Giving oral presentations,
  • Completing written explanations,
  • Interacting effectively in cooperative teams,
  • Creating well-documented programs, and
  • Understanding and interpreting written material in computer science.

Primary Contact

Katherine Vahey
303.384.2616
vahey@mines.edu

Professors

Tracy Camp, Department Head

Dinesh Mehta

Associate Professors

Qi Han

William Hoff

Hua Wang

Chuan Yue

Assistant Professors

Dejun Yang

Bo Wu

Hao Zhang

Neil Dantam

Thomas Williams

Teaching Professor

Vibhuti Dave

Teaching Associate Professors

Christopher Painter-Wakefield

Jeffrey Paone, Assistant Department Head

Wendy Fisher

Teaching Assistant Professor

Laura Legault

Professor of practice

Mark Baldwin

Emeritus Professor

Cyndi Rader

Bachelor of Science in Computer Science Degree Requirements:

Freshman
Fallleclabsem.hrs
MATH111CALCULUS FOR SCIENTISTS AND ENGINEERS I  4.0
CSM101FRESHMAN SUCCESS SEMINAR  0.5
CHGN121PRINCIPLES OF CHEMISTRY I  4.0
CSCI101INTRODUCTION TO COMPUTER SCIENCE  3.0
HASS100NATURE AND HUMAN VALUES  4.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
MATH112CALCULUS FOR SCIENTISTS AND ENGINEERS II  4.0
PHGN100PHYSICS I - MECHANICS  4.5
EDNS151DESIGN I  3.0
CSCI261PROGRAMMING CONCEPTS  3.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
15.0
Sophomore
Fallleclabsem.hrs
MATH213CALCULUS FOR SCIENTISTS AND ENGINEERS III  4.0
PHGN200PHYSICS II-ELECTROMAGNETISM AND OPTICS  4.5
CSCI274INTRODUCTION TO THE LINUX OPERATING SYSTEM  1.0
CSCI262DATA STRUCTURES  3.0
EBGN201PRINCIPLES OF ECONOMICS  3.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
MATH225DIFFERENTIAL EQUATIONS  3.0
CSCI358DISCRETE MATHEMATICS  3.0
CSCI341COMPUTER ORGANIZATION  3.0
HASS200GLOBAL STUDIES  3.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
Focus Area Course 1  3.0
15.5
Junior
Fallleclabsem.hrs
MATH332LINEAR ALGEBRA  3.0
CSCI306SOFTWARE ENGINEERING  3.0
FREEFree Elective  3.0
Focus Area Course 2  3.0
Focus Area Course 3  3.0
15.0
Springleclabsem.hrs
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS  3.0
CSCI406ALGORITHMS  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
FREEFree Elective  3.0
Focus Area Course 4  3.0
15.0
Summerleclabsem.hrs
CSCI370ADVANCED SOFTWARE ENGINEERING  4.5
4.5
Senior
Fallleclabsem.hrs
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
CSCI400PRINCIPLES OF PROGRAMMING LANGUAGES  3.0
Focus Area Course 5  3.0
Focus Area Course 6  3.0
Focus Area Course 7  3.0
15.0
Springleclabsem.hrs
HASS/EBGN HASS 400 Level Restricted Elective  3.0
CSCI442OPERATING SYSTEMS  3.0
Focus Area Course 8  3.0
Focus Area Course 9  3.0
Focus Area Course 10  3.0
15.0
Total Semester Hrs: 127.0

Focus Areas

The Department of Computer Science offers six focus areas:

  1. Computer Science
  2. CS + Business
  3. CS + Computer Engineering
  4. CS + Data Science
  5. CS + Research Honors
  6. CS + Robotics & Intelligent Systems

Computer Science Electives can be chosen from any CSCI400-level course, any CSCI500-level course (with advisor approval), MATH307, or EENG383.  EDNS491 & EDNS492, when both courses are taken together, can both be counted as Computer Science Electives.  In a given focus area, a required course for that focus area can not also be counted as a CSCI technical elective in that focus area.

Computer Science

FREEFree Elective3.0
CSCI403DATA BASE MANAGEMENT3.0
FREEFree Elective3.0
CSCI ELECTComputer Science Elective3.0
CSCI ELECTComputer Science Elective3.0
CSCI ELECTComputer Science Elective3.0
FREEFree Elective3.0
CSCI ELECTComputer Science Elective3.0
CSCI ELECTComputer Science Elective3.0
FREEFree Elective3.0
Total Semester Hrs30.0

CS + Business

CSCI303INTRODUCTION TO DATA SCIENCE3.0
CSCI403DATA BASE MANAGEMENT3.0
EBGN***BS Elective #&3.0
EBGN***BS Elective #&3.0
EBGN***BS Elective #&3.0
CSCI475INFORMATION SECURITY AND PRIVACY3.0
CSCI ELECTComputer Science Elective3.0
EBGN***BS Elective #&3.0
CSCI448MOBILE APPLICATION DEVELOPMENT3.0
or CSCI445 WEB PROGRAMMING
or CSCI446 WEB APPLICATIONS
FREEFree Elective3.0
Total Semester Hrs30.0

CS + Computer Engineering

CSCI250PYTHON-BASED COMPUTING: BUILDING A SENSOR SYSTEM3.0
EENG281INTRODUCTION TO ELECTRICAL CIRCUITS, ELECTRONICS AND POWER #&3-4
or EENG282 ELECTRICAL CIRCUITS
or PHGN215 ANALOG ELECTRONICS
EENG284DIGITAL LOGIC #3-4
or PHGN317 SEMICONDUCTOR CIRCUITS- DIGITAL
EENG383MICROCOMPUTER ARCHITECTURE AND INTERFACING4.0
CSCI471COMPUTER NETWORKS I3.0
CSCI475INFORMATION SECURITY AND PRIVACY3.0
CSCI ELECTComputer Science Elective3.0
CSCI403DATA BASE MANAGEMENT3.0
or CSCI440 PARALLEL COMPUTING FOR SCIENTISTS AND ENGINEERS
or CSCI474 INTRODUCTION TO CRYPTOGRAPHY
FREEFree Elective3.0
FREEFree Elective1.0
Total Semester Hrs29-31

CS + Data Science

CSCI303INTRODUCTION TO DATA SCIENCE3.0
CSCI403DATA BASE MANAGEMENT3.0
MATH334INTRODUCTION TO PROBABILITY3.0
MATH335INTRODUCTION TO MATHEMATICAL STATISTICS3.0
MATH424INTRODUCTION TO APPLIED STATISTICS3.0
CSCI470INTRODUCTION TO MACHINE LEARNING 3.0
MATH432SPATIAL STATISTICS3.0
or MATH436 ADVANCED STATISTICAL MODELING
or MATH437 MULTIVARIATE ANALYSIS
or MATH438 STOCHASTIC MODELS
or MATH439 SURVIVAL ANALYSIS
CSCI404ARTIFICIAL INTELLIGENCE3.0
or CSCI423 COMPUTER SIMULATION
or CSCI440 PARALLEL COMPUTING FOR SCIENTISTS AND ENGINEERS
or CSCI474 INTRODUCTION TO CRYPTOGRAPHY
or CSCI475 INFORMATION SECURITY AND PRIVACY
CSCI ELECTComputer Science Elective3.0
FREEFree Elective3.0
Total Semester Hrs30.0

CS + Research Honors

FREEFree Elective3.0
CSCI403DATA BASE MANAGEMENT3.0
GPGN350SCIENCE AND COMMUNICATION SKILLS3.0
CSCI ELECTComputer Science Elective3.0
CSCI480COMPUTER SCIENCE HONORS THESIS3.0
CSCI5**Computer Science Honors Elective #3.0
CSCI ELECTComputer Science Elective3.0
CSCI480COMPUTER SCIENCE HONORS THESIS3.0
CSCI5**Computer Science Honors Elective #3.0
CSCI ELECTComputer Science Elective3.0
Total Semester Hrs30.0

CS + Robotics & Intelligent Systems

CSCI250PYTHON-BASED COMPUTING: BUILDING A SENSOR SYSTEM3.0
EENG281INTRODUCTION TO ELECTRICAL CIRCUITS, ELECTRONICS AND POWER #&3-4
or EENG282 ELECTRICAL CIRCUITS
or PHGN215 ANALOG ELECTRONICS
FREEFree Elective3.0
MEGN441INTRODUCTION TO ROBOTICS3.0
EENG307INTRODUCTION TO FEEDBACK CONTROL SYSTEMS3.0
CSCI470INTRODUCTION TO MACHINE LEARNING 3.0
CSCI437INTRODUCTION TO COMPUTER VISION3.0
CSCI404ARTIFICIAL INTELLIGENCE3.0
CSCI473HUMAN-CENTERED ROBOTICS3.0
CSCI ELECTComputer Science Elective3.0
Total Semester Hrs30-31

Major GPA

During the 2016-2017 Academic Year, the Undergraduate Council considered the policy concerning required major GPAs and which courses are included in each degree’s GPA.  While the GPA policy has not been officially updated, in order to provide transparency, council members agreed that publishing the courses included in each degree’s GPA is beneficial to students. 

The following list details the courses that are included in the GPA for this degree:

  • CSCI300 through CSCI799 inclusive
  • MATH332

Computer Science

For an Area of Special Interest in Computer Science, the student should take:

CSCI262DATA STRUCTURES3.0
CSCI306SOFTWARE ENGINEERING3.0
CSCI358DISCRETE MATHEMATICS3.0
CSCI406ALGORITHMS3.0

or

CSCI262DATA STRUCTURES3.0
CSCI306SOFTWARE ENGINEERING3.0
CSCI341COMPUTER ORGANIZATION3.0
CSCI442OPERATING SYSTEMS3.0

For a Minor in Computer Science, the student should take:

CSCI261PROGRAMMING CONCEPTS3.0
CSCI262DATA STRUCTURES3.0
CSCI306SOFTWARE ENGINEERING3.0
CSCI406ALGORITHMS3.0
CSCI ELECT Computer Science Elective *^3.0
CSCI ELECT Computer Science Elective *3.0

or

CSCI261PROGRAMMING CONCEPTS3.0
CSCI262DATA STRUCTURES3.0
CSCI341COMPUTER ORGANIZATION3.0
CSCI442OPERATING SYSTEMS3.0
CSCI ELECT Computer Science Elective *3.0
CSCI ELECT Computer Science Elective *3.0

Minor in Computer Engineering

To earn the Minor in Computer Engineering, a student must take at least 18 credit hours from the following list, at least 9 of which must be 300-level or above:

CSCI261PROGRAMMING CONCEPTS3.0
CSCI262DATA STRUCTURES3.0
CSCI341COMPUTER ORGANIZATION3.0
CSCI442OPERATING SYSTEMS3.0
EENG281INTRODUCTION TO ELECTRICAL CIRCUITS, ELECTRONICS AND POWER ^3.0
or EENG282 ELECTRICAL CIRCUITS
EENG284DIGITAL LOGIC *4.0
EENG383MICROCOMPUTER ARCHITECTURE AND INTERFACING4.0

Minor in Data Science

Complete one of the following sets of courses: 

CSCI261PROGRAMMING CONCEPTS3.0
CSCI262DATA STRUCTURES3.0
CSCI303INTRODUCTION TO DATA SCIENCE3.0
CSCI403DATA BASE MANAGEMENT3.0
CSCI470INTRODUCTION TO MACHINE LEARNING 3.0
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS3.0
Total Semester Hrs18.0

Or

CSCI261PROGRAMMING CONCEPTS3.0
CSCI262DATA STRUCTURES3.0
CSCI303INTRODUCTION TO DATA SCIENCE3.0
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS3.0
MATH334INTRODUCTION TO PROBABILITY3.0
MATH335INTRODUCTION TO MATHEMATICAL STATISTICS3.0
Total Semester Hrs18.0

Minor in Robotics and Intelligent Systems

Complete the following courses:

CSCI261PROGRAMMING CONCEPTS3.0
CSCI262DATA STRUCTURES3.0
CSCI404ARTIFICIAL INTELLIGENCE3.0
CSCI473HUMAN-CENTERED ROBOTICS3.0
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS3.0
MEGN441INTRODUCTION TO ROBOTICS3.0
Total Semester Hrs18.0

Courses

CSCI101. INTRODUCTION TO COMPUTER SCIENCE. 3.0 Semester Hrs.

(I, II) An introductory course to the building blocks of Computer Science. Topics include conventional computer hardware, data representation, the role of operating systems and networks in modern computing, algorithm design, privacy and information security, data science, artificial intelligence, and computer ethics. A popular procedural programming language will be learned by students and programming assignments will explore ideas in algorithm development, optimization, and data manipulation. 3 hours lecture; 3 semester hours.

CSCI102. INTRODUCTION TO COMPUTER SCIENCE - LAB. 1.0 Semester Hr.

(I, II) This course is a 1-credit hour optional lab course for CSCI 101 that offers an opportunity for new programmers to learn the Python programming language. Python is a powerful interpreted programming language with a simple syntax and a large set of libraries. While Python is an easy language for beginner programmers to learn, it is a language that is widely used in many scientific areas (e.g., data science). This lab course will introduce students to basic programming concepts: conditionals, loops, lists, strings, file input/output, functions, and objects. Take this course with CSCI 101 to either create a 4-credit hour distributed science elective or gain more experience with algorithmic design/programming in Python. 1 hour lecture; 1 semester hour.

CSCI198. SPECIAL TOPICS. 1-6 Semester Hr.

(I, II) Pilot course or special topics course. Topics chosen from special interests of instructor(s) and student(s). Usually the course is offered only once. Prerequisite: none. Variable credit; 1 to 6 credit hours. Repeatable for credit under different titles.

CSCI199. INDEPENDENT STUDY. 1-6 Semester Hr.

(I, II) Individual research or special problem projects supervised by a faculty member, when a student and instructor agree on a subject matter, content, and credit hours. Prerequisite: "Independent Study" form must be completed and submitted to the Registrar. Variable credit; 1 to 6 credit hours. Repeatable for credit.

CSCI250. PYTHON-BASED COMPUTING: BUILDING A SENSOR SYSTEM. 3.0 Semester Hrs.

(I, II) This course will teach students the skills needed for data collection, analysis, and visualization on a small embedded device (e.g., Raspberry Pi). Students will learn basic Linux, Python, and the programming skills needed to control the hardware and associated sensors. This hands-on course includes a baseline project, four introductory projects (e.g., acoustic, acceleration, magnetic field, optical), and a final Capstone project. The Capstone project will have students create their own application using the techniques learned during the first half of the semester; students will then present their Capstone project through a formal presentation, write-up, and demonstration. We suggest the student take "Introduction to Computer Science" before this course. Co-requisite: MATH213, PHGN200. 3 hours lecture; 3 semester hours.

CSCI260. FORTRAN PROGRAMMING. 2.0 Semester Hrs.

Equivalent with MACS260,
(I) Computer programming in Fortran90/95 with applications to science and engineering. Program design and structure, problem analysis, debugging, program testing. Language skills: arithmetic, input/output, branching and looping, functions, arrays, data types. Introduction to operating systems. Prerequisite: none. 2 hours lecture; 2 semester hours.

CSCI261. PROGRAMMING CONCEPTS. 3.0 Semester Hrs.

Equivalent with MACS261,
(I, II) This course introduces fundamental computer programming concepts using a high-level language and a modern development environment. Programming skills include sequential, selection, and repetition control structures, functions, input and output, primitive data types, basic data structures including arrays and pointers, objects, and classes. Software engineering skills include problem solving, program design, and debugging practices. 3 hours lecture; 3 semester hours.

CSCI262. DATA STRUCTURES. 3.0 Semester Hrs.

Equivalent with MACS262,
(I, II, S) Defining and using data structures such as linked lists, stacks, queues, binary trees, binary heap, and hash tables. Introduction to algorithm analysis, with emphasis on sorting and search routines. Language skills: abstract data types, templates, and inheritance. 3 hours lecture; 3 semester hours. Prerequisite: CSCI261 with a grade of C- or higher.

CSCI274. INTRODUCTION TO THE LINUX OPERATING SYSTEM. 1.0 Semester Hr.

(I, II) Introduction to the Linux Operating System will teach students how to become proficient with using a Linux operating system from the command line. Topics will include: remote login (ssh), file system navigation, file commands, editors, compilation, execution, redirection, output, searching, processes, usage, permissions, compression, parsing, networking, and bash scripting. Prerequisite: CSCI261. 1 hour lecture; 1 semester hour.

CSCI298. SPECIAL TOPICS. 1-6 Semester Hr.

(I, II) Pilot course or special topics course. Topics chosen from special interests of instructor(s) and student(s). Usually the course is offered only once. Prerequisite: none. Variable credit; 1 to 6 credit hours. Repeatable for credit under different titles.

CSCI299. INDEPENDENT STUDY. 1-6 Semester Hr.

(I, II) Individual research or special problem projects supervised by a faculty member, when a student and instructor agree on a subject matter, content, and credit hours. Prerequisite: "Independent Study" form must be completed and submitted to the Registrar. Variable credit; 1 to 6 credit hours. Repeatable for credit.

CSCI303. INTRODUCTION TO DATA SCIENCE. 3.0 Semester Hrs.

(I, II) This course will teach students the core skills needed for gathering, cleaning, organizing, analyzing, interpreting, and visualizing data. Students will learn basic SQL for working with databases, basic Python programming for data manipulation, and the use and application of statistical and machine learning toolkits for data analysis. The course will be primarily focused on applications, with an emphasis on working with real (non-synthetic) datasets. Prerequisite: CSCI101 or CSCI261. 3 hours lecture; 3 semester hours.

CSCI306. SOFTWARE ENGINEERING. 3.0 Semester Hrs.

Equivalent with MACS306,
(I, II) Introduction to software engineering processes and object-oriented design principles. Topics include the Agile development methodology, test-driven development, UML diagrams, use cases and several object-oriented design patterns. Course work emphasizes good programming practices via version control and code reviews. Prerequisite: CSCI262 with grade of C- or higher. 3 hours lecture; 3 semester hours.

CSCI340. COOPERATIVE EDUCATION. 3.0 Semester Hrs.

(I, II, S) (WI) Supervised, full-time engineering-related employment for a continuous six-month period (or its equivalent) in which specific educational objectives are achieved. Prerequisite: Second semester sophomore status and a cumulative grade point average of at least 2.00. 0 to 3 semester hours. Cooperative Education credit does not count toward graduation except under special conditions. Repeatable.

CSCI341. COMPUTER ORGANIZATION. 3.0 Semester Hrs.

Equivalent with MACS341,
(I, II) Covers the basic concepts of computer architecture and organization. Topics include machine level instructions and operating system calls used to write programs in assembly language, computer arithmetics, performance, processor design, and pipelining techniques. This course provides insight into the way computers operate at the machine level. Prerequisite: CSCI261. Co-requisites: CSCI262. 3 hours lecture; 3 semester hours.

CSCI358. DISCRETE MATHEMATICS. 3.0 Semester Hrs.

(I, II) This course is an introductory course in discrete mathematics and algebraic structures. Topics include: formal logic; proofs, recursion, analysis of algorithms; sets and combinatorics; relations, functions, and matrices; Boolean algebra and computer logic; trees, graphs, finite-state machines, and regular languages. Prerequisite: MATH213, MATH223 or MATH224. 3 hours lecture; 3 semester hours.

CSCI370. ADVANCED SOFTWARE ENGINEERING. 4.5 Semester Hrs.

(I, S) (WI) This capstone course has three primary goals: (1) to enable students to apply their course work knowledge to a challenging applied problem for a real client, (2) to enhance students' verbal and written communication skills, and (3) to provide an introduction to ethical decision making in computer science. Ethics and communication skills are emphasized in a classroom setting. The client work is done in small teams, either on campus or at the client site. Faculty advisors provide guidance related to the software engineering process, which is similar to Scrum. By the end of the course students must have a finished product with appropriate documentation. Prerequisite: CSCI306. 13.5 hours lab; 4.5 semester hours.

CSCI398. SPECIAL TOPICS. 1-6 Semester Hr.

(I, II) Pilot course or special topics course. Topics chosen from special interests of instructor(s) and student(s). Usually the course is offered only once. Prerequisite: none. Variable credit; 1 to 6 credit hours. Repeatable for credit under different titles.

CSCI399. INDEPENDENT STUDY. 1-6 Semester Hr.

(I, II) Individual research or special problem projects supervised by a faculty member, when a student and instructor agree on a subject matter, content, and credit hours. Prerequisite: "Independent Study" form must be completed and submitted to the Registrar. Variable credit; 1 to 6 credit hours. Repeatable for credit.

CSCI400. PRINCIPLES OF PROGRAMMING LANGUAGES. 3.0 Semester Hrs.

Equivalent with MACS400,
(I, II) Study of the principles relating to design, evaluation and implementation of programming languages, including basic compiler techniques and context-free grammars. Students will be exposed to different categories of programming languages, such as functional, imperative, object-oriented, and scripting. Best practices for programming will be explored, including effective use of exceptions and threads. The primary languages discussed are: Java, C++, Scheme, and Perl. Prerequisite: CSCI306. 3 hours lecture; 3 semester hours.

CSCI403. DATA BASE MANAGEMENT. 3.0 Semester Hrs.

Equivalent with MACS403,
(I, II) Design and evaluation of information storage and retrieval systems, including defining and building a database and producing the necessary queries for access to the stored information. Relational database management systems, structured query language, and data storage facilities. Applications of data structures such as lists, inverted lists and trees. System security, maintenance, recovery and definition. Interfacing host languages to database systems and object-relational mapping tools. NoSQL databases and distributed databases. Prerequisite: CSCI262 with a grade of C- or higher. 3 hours lecture; 3 semester hours.

CSCI404. ARTIFICIAL INTELLIGENCE. 3.0 Semester Hrs.

Equivalent with MACS404,
(II) General investigation of the Artificial Intelligence field. Several methods used in artificial intelligence such as search strategies, knowledge representation, logic and probabilistic reasoning are developed and applied to practical problems. Fundamental artificial intelligence techniques are presented, including neural networks, genetic algorithms, and fuzzy sets. Selected application areas, such as robotics, natural language processing and games, are discussed. Prerequisite: CSCI262 with a grade of C- or higher and MATH201. 3 hours lecture; 3 semester hours.

CSCI406. ALGORITHMS. 3.0 Semester Hrs.

Equivalent with MACS406,MATH406,
(I, II) Reasoning about algorithm correctness (proofs, counterexamples). Analysis of algorithms: asymptotic and practical complexity. Review of dictionary data structures (including balanced search trees). Priority queues. Advanced sorting algorithms (heapsort, radix sort). Advanced algorithmic concepts illustrated through sorting (randomized algorithms, lower bounds, divide and conquer). Dynamic programming. Backtracking. Algorithms on unweighted graphs (traversals) and weighted graphs (minimum spanning trees, shortest paths, network flows and bipartite matching); NP-completeness and its consequences. Prerequisite: CSCI262 with a grade of C- or higher, (MATH213 or MATH223 or MATH224), and (MATH300 or MATH358 or CSCI358). 3 hours lecture; 3 semester hours.

CSCI410. ELEMENTS OF COMPUTING SYSTEMS. 3.0 Semester Hrs.

(I, II) This comprehensive course will help students consolidate their understanding of all fundamental computer science concepts. Topics include symbolic communication, Boolean logic, binary systems, logic gates, computer architecture, assembly language, assembler construction, virtual machines, object-oriented programming languages, software engineering, compilers, language design, and operating systems. Using a hardware simulator and a programming language of their choice, students construct an entire modern computer from the ground up, resulting in an intimate understanding of how each component works. Prerequisites: CSCI341 or EENG383. 3 lecture hours, 3 credit hours.

CSCI422. USER INTERFACES. 3.0 Semester Hrs.

Equivalent with MACS422,
(I) User Interface Design is a course for programmers who want to learn how to create more effective software. This objective will be achieved by studying principles and patterns of interaction design, critiquing existing software using criteria presented in the textbooks, and applying criteria to the design and implementation of one larger product. Students will also learn a variety of techniques to guide the software design process, including Cognitive Walkthrough, Talk-aloud and others. Prerequisite: CSCI262. 3 hours lecture; 3 semester hours.

CSCI423. COMPUTER SIMULATION. 3.0 Semester Hrs.

(I) A first course in computer simulation. A project based course emphasizing the rigorous development of simulation applications. Topics will include random number generation, Monte Carlo simulation, discrete event simulation, and the mathematics behind their proper implementation and analysis. To a lesser extent we may discuss, time-step simulations and parallel simulations. The course uses journaling, programming projects and exams for assessment. Prerequisite: CSCI306, and MATH323 or MATH201, and CSCI274. 3 hours lecture; 3 semester hours.

CSCI437. INTRODUCTION TO COMPUTER VISION. 3.0 Semester Hrs.

Equivalent with CSCI512,EENG507,EENG512,EGGN512,
(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Prerequisites: MATH201 or EENG311, MATH332, CSCI261, Senior level standing. 3 hours lecture; 3 semester hours.

CSCI440. PARALLEL COMPUTING FOR SCIENTISTS AND ENGINEERS. 3.0 Semester Hrs.

Equivalent with MATH440,
(II) This course is designed to introduce the field of parallel computing to all scientists and engineers. The students will be taught how to solve scientific problems using parallel computing technologies. They will be introduced to basic terminologies and concepts of parallel computing, learn how to use MPI to develop parallel programs, and study how to design and analyze parallel algorithms. Prerequisite: CSCI262 with a grade of C- or higher, CSCI341. 3 hours lecture; 3 semester hours.

CSCI441. COMPUTER GRAPHICS. 3.0 Semester Hrs.

Equivalent with MATH441,
(I) This class focuses on the basic 3D rendering and modeling techniques. In particular, it covers the graphics pipeline, elements of global illumination, modeling techniques based on polynomial curves and patches, and shader programming using the GPU. Prerequisites: CSCI262 with a grade of C- or higher, MATH332. 3 hours lecture; 3 semester hours.

CSCI442. OPERATING SYSTEMS. 3.0 Semester Hrs.

Equivalent with MACS442,
(I, II) Introduces the essential concepts in the design and implementation of operating systems: what they can do, what they contain, and how they are implemented. Despite rapid OS growth and development, the fundamental concepts learned in this course will endure. We will cover the following high-level OS topics, roughly in this order: computer systems, processes, processor scheduling, memory management, virtual memory, threads, and process/thread synchronization. This course provides insight into the internal structure of operating systems; emphasis is on concepts and techniques that are valid for all computers. Prerequisite: CSCI262 with a grade of C- or higher, CSCI274, CSCI341. 3 hours lecture; 3 semester hours.

CSCI443. ADVANCED PROGRAMMING CONCEPTS USING JAVA. 3.0 Semester Hrs.

Equivalent with MACS443,
(I, II) This course will quickly review programming constructs using the syntax and semantics of the Java programming language. It will compare the constructs of Java with other languages and discuss program design and implementation. Object oriented programming concepts will be reviewed and applications, applets, servlets, graphical user interfaces, threading, exception handling, JDBC, and networking as implemented in Java will be discussed. The basics of the Java Virtual Machine will be presented. Prerequisite: CSCI306. 3 hours lecture; 3 semester hours.

CSCI444. ADVANCED COMPUTER GRAPHICS. 3.0 Semester Hrs.

Equivalent with MATH444,
(II) This is an advanced computer graphics course, focusing on modern rendering and geometric modeling techniques. Students will learn a variety of mathematical and algorithmic techniques that can be used to develop high-quality computer graphic software. Runtime performance will be evaluated to create optimized real-time graphics applications. In particular, the course will cover global illumination, GPU programming, and virtual and augmented reality. Prerequisites: CSCI441. 3 hours lecture; 3 semester hours.

CSCI445. WEB PROGRAMMING. 3.0 Semester Hrs.

Equivalent with MACS445,
(I) Web Programming is a course for programmers who want to develop web-based applications. It covers basic website design extended by client-side and server-side programming. Students should acquire an understanding of the role and application of web standards to website development. Topics include Cascading Style Sheets (CSS), JavaScript, PHP and database connectivity. At the conclusion of the course students should feel confident that they can design and develop dynamic Web applications on their own. Prerequisite: CSCI262. Co-requisite: CSCI403. 3 hours lecture; 3 semester hours.

CSCI446. WEB APPLICATIONS. 3.0 Semester Hrs.

(II) In Web Applications students will learn how to build effective web-based applications. At the completion of this course, students should know HTTP, Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), JavaScript, Ajax, and RESTful architectures. Additionally students should have considered a variety of issues related to web application architecture, including but not limited to security, performance, web frameworks and cloud-based deployment environments. Prerequisites: CSCI262. Co-requisites: CSCI403. 3 hours lecture; 3 semester hours.

CSCI447. SCIENTIFIC VISUALIZATION. 3.0 Semester Hrs.

Equivalent with MATH447,
(I) Scientific visualization uses computer graphics to create visual images which aid in understanding of complex, often massive numerical representation of scientific concepts or results. The main focus of this course is on modern visualization techniques applicable to spatial data such as scalar, vector and tensor fields. In particular, the course will cover volume rendering, texture based methods for vector and tensor field visualization, and scalar and vector field topology. Basic understanding of computer graphics and analysis of algorithms required. Prerequisites: CSCI262 and MATH441. 3 lecture hours, 3 semester hours.

CSCI448. MOBILE APPLICATION DEVELOPMENT. 3.0 Semester Hrs.

(II) This course covers basic and advanced topics in mobile application development. Topics include the mobile application lifecycle, user interface components and layouts, storing persistent data, accessing network resources, using location and sensor APIs including GPS and accelerometer, starting and stopping system services, and threading. This is a project-based course where students will design and develop complete applications. Prerequisite: CSCI306 with a grade of C- or higher. 3 hours lecture; 3 semester hours.

CSCI455. GAME THEORY AND NETWORKS. 3.0 Semester Hrs.

Equivalent with CSCI555,
(I) An introduction to fundamental concepts of game theory with a focus on the applications in networks. Game theory is the study that analyzes the strategic interactions among autonomous decision-makers. Originated from economics. Influenced many areas in Computer Science, including artificial intelligence, e-commerce, theory, and security and privacy. Provides tools and knowledge for modeling and analyzing real-world problems. Prerequisites: CSCI358, CSCI406. 3 hours lecture; 3 semester hours.

CSCI470. INTRODUCTION TO MACHINE LEARNING. 3.0 Semester Hrs.

(I) The goal of machine learning is to build computer systems that improve automatically with experience, which has been successfully applied to a variety of application areas, including, for example, gene discovery, financial forecasting, and credit card fraud detection. This introductory course will study both the theoretical properties of machine learning algorithms and their practical applications. Students will have an opportunity to experiment with machine learning techniques and apply them to a selected problem in the context of term projects. Prerequisites: MATH201, MATH332. 3 hours lecture; 3 semester hours.

CSCI471. COMPUTER NETWORKS I. 3.0 Semester Hrs.

(I) This introduction to computer networks covers the fundamentals of computer communications, using TCP/IP standardized protocols as the main case study. The application layer and transport layer of communication protocols will be covered in depth. Detailed topics include application layer protocols (HTTP, FTP, SMTP, and DNS), transport layer protocols (reliable data transfer, connection management, and congestion control), network layer protocols, and link layer protocols. In addition, students will program client/server network applications. Prerequisites: CSCI262, CSCI274. 3 hours lecture; 3 semester hours.

CSCI473. HUMAN-CENTERED ROBOTICS. 3.0 Semester Hrs.

Equivalent with CSCI573,
(II) Human-centered robotics is an interdisciplinary area that bridges research and application of methodology from robotics, machine vision, machine learning, human-computer interaction, human factors, and cognitive science. Students will learn about fundamental research in human-centered robotics, as well as develop computational models for robotic perception, internal representation, robotic learning, human-robot interaction, and robot cognition for decision making. Prerequisites: CSCI262 and MATH201. 3 hours lecture; 3 semester hours.

CSCI474. INTRODUCTION TO CRYPTOGRAPHY. 3.0 Semester Hrs.

Equivalent with MATH474,
(II) This course is primarily oriented towards the mathematical aspects of cryptography, but is also closely related to practical and theoretical issues of computer security. The course provides mathematical background required for cryptography, including relevant aspects of number theory and mathematical statistics. The following aspects of cryptography will be covered: symmetric and asymmetric encryption, computational number theory, quantum encryption, RSA and discrete log systems, SHA, steganography, chaotic and pseudo-random sequences, message authentication, digital signatures, key distribution and key management, and block ciphers. Many practical approaches and most commonly used techniques will be considered and illustrated with real-life examples. Prerequisites: CSCI262, CSCI358, MATH334 or MATH335 or MATH201. 3 hours lecture; 3 semester hours.

CSCI475. INFORMATION SECURITY AND PRIVACY. 3.0 Semester Hrs.

(I) Information Security and Privacy provides a hands-on introduction to the principles and best practices in information and computer security. Lecture topics will include basic components of information security including threat assessment and mitigation, policy development, forensics investigation, and the legal and political dimensions of information security. Prerequisite: CSCI 262 and CSCI 341 (required); CSCI 274 (recommended). 3 hours lecture; 3 semester hours.

CSCI477. ELEMENTS OF GAMES AND GAME DEVELOPMENT. 3.0 Semester Hrs.

(II) This course provides an overview of computer and video game development along with practical game projects designed to introduce the student to the computer entertainment industry. Topics will include the nature of games, the game player, game play, game design, game mechanics, story and character, game worlds, interface and the game development process. Students will be required to develop code both in C++ and with the use of a game engine. Prerequisite: CSCI262. 3 hours lecture; 3 semester hours.

CSCI480. COMPUTER SCIENCE HONORS THESIS. 3.0 Semester Hrs.

(I, II) Prerequisite: CSCI306. 3 hours research; 3 semester hours. Repeatable for credit up to 6 semester hours.

CSCI498. SPECIAL TOPICS. 1-6 Semester Hr.

(I, II) Pilot course or special topics course. Topics chosen from special interests of instructor(s) and student(s). Usually the course is offered only once. Prerequisite: none. Variable credit; 1 to 6 credit hours. Repeatable for credit under different titles.

CSCI499. INDEPENDENT STUDY. 1-6 Semester Hr.

(I, II) Individual research or special problem projects supervised by a faculty member, when a student and instructor agree on a subject matter, content, and credit hours. Prerequisite: "Independent Study" form must be completed and submitted to the Registrar. Variable credit; 1 to 6 credit hours. Repeatable for credit.