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

Kelly Knechtel
303 384-2394
knechtel@mines.edu

Professors

Tracy Camp, Department Head

Dinesh Mehta

Associate professors

Qi Han

William Hoff

Assistant professors

Neil Dantam

Hua Wang

Thomas Williams

Bo Wu

Dejun Yang

Chuan Yue

Hao Zhang

Teaching Associate Professors

Wendy Fisher

Christopher Painter-Wakefield

Jeffrey Paone, Assistant Department Head

Emeritus Professor

Cyndi Rader

Professor of practice

Mark Baldwin

Bachelor of Science in Computer Science Degree Requirements:

Freshman
Fallleclabsem.hrs
CSCI101INTRODUCTION TO COMPUTER SCIENCE  3.0
CHGN121PRINCIPLES OF CHEMISTRY I  4.0
MATH111CALCULUS FOR SCIENTISTS AND ENGINEERS I  4.0
HASS100NATURE AND HUMAN VALUES  4.0
CSM101FRESHMAN SUCCESS SEMINAR  0.5
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI261PROGRAMMING CONCEPTS  3.0
MATH112CALCULUS FOR SCIENTISTS AND ENGINEERS II  4.0
EDNS151INTRODUCTION TO DESIGN  3.0
PHGN100PHYSICS I - MECHANICS  4.5
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
CSCI262DATA STRUCTURES  3.0
EBGN201PRINCIPLES OF ECONOMICS  3.0
CSCI274INTRODUCTION TO THE LINUX OPERATING SYSTEM  1.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI341COMPUTER ORGANIZATION  3.0
CSCI358DISCRETE MATHEMATICS  3.0
MATH225DIFFERENTIAL EQUATIONS  3.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
HASS200GLOBAL STUDIES  3.0
FREE Free Elective  3.0
15.5
Junior
Fallleclabsem.hrs
CSCI306SOFTWARE ENGINEERING  3.0
MATH332LINEAR ALGEBRA  3.0
CSCI403DATA BASE MANAGEMENT  3.0
FREE Free Elective  3.0
FREE Free Elective  3.0
15.0
Springleclabsem.hrs
CSCI406ALGORITHMS  3.0
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS  3.0
CSCI ELECT Computer Science Elective*  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
FREE Free Elective  3.0
15.0
Summerleclabsem.hrs
CSCI370ADVANCED SOFTWARE ENGINEERING  6.0
6.0
Senior
Fallleclabsem.hrs
CSCI400PRINCIPLES OF PROGRAMMING LANGUAGES  3.0
CSCI ELECT Computer Science Elective*  3.0
CSCI ELECT Computer Science Elective*  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
FREE Free Elective  3.0
15.0
Springleclabsem.hrs
CSCI442OPERATING SYSTEMS  3.0
CSCI ELECT Computer Science Elective*  3.0
CSCI ELECT Computer Science Elective*  3.0
HASS/EBGN HASS 400-Level Restricted Elective  3.0
FREE Free Elective  3.0
15.0
Total Semester Hrs: 128.5
*

CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

BACHELOR OF SCIENCE IN COMPUTER SCIENCE-COMPUTER ENGINEERING DEGREE REQUIREMENTS:

Freshman
Fallleclabsem.hrs
CSCI101INTRODUCTION TO COMPUTER SCIENCE  3.0
CHGN121PRINCIPLES OF CHEMISTRY I  4.0
MATH111CALCULUS FOR SCIENTISTS AND ENGINEERS I  4.0
CSM101FRESHMAN SUCCESS SEMINAR  0.5
HASS100NATURE AND HUMAN VALUES  4.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI261PROGRAMMING CONCEPTS  3.0
MATH112CALCULUS FOR SCIENTISTS AND ENGINEERS II  4.0
EDNS151INTRODUCTION TO DESIGN  3.0
PHGN100PHYSICS I - MECHANICS  4.5
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
CSCI262DATA STRUCTURES  3.0
EBGN201PRINCIPLES OF ECONOMICS  3.0
CSCI274INTRODUCTION TO THE LINUX OPERATING SYSTEM  1.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI358DISCRETE MATHEMATICS  3.0
MATH225DIFFERENTIAL EQUATIONS  3.0
CSCI250PYTHON-BASED COMPUTING: BUILDING A SENSOR SYSTEM  3.0
HASS200GLOBAL STUDIES  3.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
FREE Free Elective  3.0
15.5
Junior
Fallleclabsem.hrs
CSCI306SOFTWARE ENGINEERING  3.0
MATH332LINEAR ALGEBRA  3.0
FREE Free Elective  3.0
CSCI341COMPUTER ORGANIZATION  3.0
EENG281INTRODUCTION TO ELECTRICAL CIRCUITS, ELECTRONICS AND POWER or PHGN 215#  3.0
15.0
Springleclabsem.hrs
CSCI406ALGORITHMS  3.0
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
EENG284DIGITAL LOGIC or PHGN 317#  4.0
CSCI442OPERATING SYSTEMS  3.0
16.0
Summerleclabsem.hrs
CSCI370ADVANCED SOFTWARE ENGINEERING  6.0
6.0
Senior
Fallleclabsem.hrs
CSCI ELECT Computer Science Elective*  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
CSCI471COMPUTER NETWORKS I  3.0
CSCI475INFORMATION SECURITY AND PRIVACY  3.0
FREE Free Elective  3.0
15.0
Springleclabsem.hrs
HASS/EBGN HASS 400-Level Restricted Elective  3.0
FREE Free Elective  1.0
EENG383MICROCOMPUTER ARCHITECTURE AND INTERFACING  4.0
CPNG ELECT Computer Engineering Elective^  3.0
CSCI400PRINCIPLES OF PROGRAMMING LANGUAGES  3.0
14.0
Total Semester Hrs: 128.5
*

CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

^

CSCI403, CSCI440, CSCI474 

#

 PHGN215/PHGN317 provide similar content to EENG281/EENG284 and can be substituted with preapproval.

BACHELOR OF SCIENCE IN COMPUTER SCIENCE-DATA SCIENCE DEGREE REQUIREMENTS:

Freshman
Fallleclabsem.hrs
CSCI101INTRODUCTION TO COMPUTER SCIENCE  3.0
CHGN121PRINCIPLES OF CHEMISTRY I  4.0
MATH111CALCULUS FOR SCIENTISTS AND ENGINEERS I  4.0
CSM101FRESHMAN SUCCESS SEMINAR  0.5
HASS100NATURE AND HUMAN VALUES  4.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI261PROGRAMMING CONCEPTS  3.0
MATH112CALCULUS FOR SCIENTISTS AND ENGINEERS II  4.0
EDNS151INTRODUCTION TO DESIGN  3.0
PHGN100PHYSICS I - MECHANICS  4.5
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
CSCI262DATA STRUCTURES  3.0
EBGN201PRINCIPLES OF ECONOMICS  3.0
CSCI274INTRODUCTION TO THE LINUX OPERATING SYSTEM  1.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI358DISCRETE MATHEMATICS  3.0
MATH225DIFFERENTIAL EQUATIONS  3.0
HASS200GLOBAL STUDIES  3.0
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS  3.0
CSCI303INTRODUCTION TO DATA SCIENCE  3.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
15.5
Junior
Fallleclabsem.hrs
CSCI306SOFTWARE ENGINEERING  3.0
MATH332LINEAR ALGEBRA  3.0
FREE Free Elective  3.0
CSCI341COMPUTER ORGANIZATION  3.0
MATH334INTRODUCTION TO PROBABILITY  3.0
15.0
Springleclabsem.hrs
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
MATH335INTRODUCTION TO MATHEMATICAL STATISTICS  3.0
CSCI403DATA BASE MANAGEMENT  3.0
FREE Free Elective  3.0
CSCI406ALGORITHMS  3.0
15.0
Summerleclabsem.hrs
CSCI370ADVANCED SOFTWARE ENGINEERING  6.0
6.0
Senior
Fallleclabsem.hrs
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
MATH424INTRODUCTION TO APPLIED STATISTICS  3.0
CSCI470INTRODUCTION TO MACHINE LEARNING   3.0
DS ELECT Data Science Math Elective^  3.0
CSCI400PRINCIPLES OF PROGRAMMING LANGUAGES  3.0
15.0
Springleclabsem.hrs
HASS/EBGN HASS 400-Level Restricted Elective  3.0
FREE Free Elective  3.0
CSCI ELECT Computer Science Elective*  3.0
DS ELECT Data Science CS Elective&  3.0
CSCI442OPERATING SYSTEMS  3.0
15.0
Total Semester Hrs: 128.5
*

CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

^

MATH432MATH436MATH437MATH438MATH439

&

 CSCI404,  CSCI423,  CSCI440,  CSCI474,  CSCI475

BACHELOR OF SCIENCE IN COMPUTER SCIENCE-ROBOTICS AND INTELLIGENT SYSTEMS DEGREE REQUIREMENTS:

Freshman
Fallleclabsem.hrs
CSCI101INTRODUCTION TO COMPUTER SCIENCE  3.0
CHGN121PRINCIPLES OF CHEMISTRY I  4.0
MATH111CALCULUS FOR SCIENTISTS AND ENGINEERS I  4.0
CSM101FRESHMAN SUCCESS SEMINAR  0.5
HASS100NATURE AND HUMAN VALUES  4.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI261PROGRAMMING CONCEPTS  3.0
MATH112CALCULUS FOR SCIENTISTS AND ENGINEERS II  4.0
EDNS151INTRODUCTION TO DESIGN  3.0
PHGN100PHYSICS I - MECHANICS  4.5
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
CSCI262DATA STRUCTURES  3.0
EBGN201PRINCIPLES OF ECONOMICS  3.0
CSCI274INTRODUCTION TO THE LINUX OPERATING SYSTEM  1.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
16.0
Springleclabsem.hrs
CSCI358DISCRETE MATHEMATICS  3.0
MATH225DIFFERENTIAL EQUATIONS  3.0
HASS200GLOBAL STUDIES  3.0
FREE Free Elective  3.0
PAGN ElectivePHYSICAL ACTIVITY COURSE  0.5
CSCI250PYTHON-BASED COMPUTING: BUILDING A SENSOR SYSTEM  3.0
15.5
Junior
Fallleclabsem.hrs
CSCI306SOFTWARE ENGINEERING  3.0
MATH332LINEAR ALGEBRA  3.0
FREE Free Elective  3.0
CSCI341COMPUTER ORGANIZATION  3.0
EENG281INTRODUCTION TO ELECTRICAL CIRCUITS, ELECTRONICS AND POWER  3.0
15.0
Springleclabsem.hrs
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS  3.0
CSCI400PRINCIPLES OF PROGRAMMING LANGUAGES  3.0
CSCI406ALGORITHMS  3.0
MEGN441INTRODUCTION TO ROBOTICS  3.0
15.0
Summerleclabsem.hrs
CSCI370ADVANCED SOFTWARE ENGINEERING  6.0
6.0
Senior
Fallleclabsem.hrs
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
CSCI442OPERATING SYSTEMS  3.0
EENG307INTRODUCTION TO FEEDBACK CONTROL SYSTEMS  3.0
CSCI470INTRODUCTION TO MACHINE LEARNING   3.0
CSCI437INTRODUCTION TO COMPUTER VISION  3.0
15.0
Springleclabsem.hrs
HASS/EBGN HASS 400-Level Restricted Elective  3.0
FREE Free Elective  3.0
CSCI404ARTIFICIAL INTELLIGENCE  3.0
CSCI473HUMAN-CENTERED ROBOTICS  3.0
CSCI ELECT Computer Science Elective*  3.0
15.0
Total Semester Hrs: 128.5
*

CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

BACHELOR OF SCIENCE IN COMPUTER SCIENCE-BUSINESS 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
PAGN Elective Physical Activity Course  0.5
HASS100NATURE AND HUMAN VALUES  4.0
16.0
Springleclabsem.hrs
MATH112CALCULUS FOR SCIENTISTS AND ENGINEERS II  4.0
PHGN100PHYSICS I - MECHANICS  4.5
EDNS151INTRODUCTION TO DESIGN  3.0
CSCI261PROGRAMMING CONCEPTS  3.0
PAGN Elective Physical Activity Course  0.5
15.0
Sophomore
Fallleclabsem.hrs
MATH213CALCULUS FOR SCIENTISTS AND ENGINEERS III  4.0
PHGN200PHYSICS II-ELECTROMAGNETISM AND OPTICS  4.5
CSCI262DATA STRUCTURES  3.0
CSCI274INTRODUCTION TO THE LINUX OPERATING SYSTEM  1.0
EBGN201PRINCIPLES OF ECONOMICS  3.0
PAGN Elective Physical 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 Elective Physical Activity Course  0.5
FREE Free Elective  3.0
15.5
Junior
Fallleclabsem.hrs
CSCI306SOFTWARE ENGINEERING  3.0
MATH332LINEAR ALGEBRA  3.0
CSCI303INTRODUCTION TO DATA SCIENCE  3.0
CSCI403DATA BASE MANAGEMENT  3.0
BS ELECT Business Elective^&  3.0
15.0
Springleclabsem.hrs
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS  3.0
CSCI406ALGORITHMS  3.0
BS ELECT Business Elective^&  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
FREE Free Elective  3.0
15.0
Summerleclabsem.hrs
CSCI370ADVANCED SOFTWARE ENGINEERING  6.0
6.0
Senior
Fallleclabsem.hrs
CSCI475INFORMATION SECURITY AND PRIVACY  3.0
CSCI ELECT Computer Science Elective*  3.0
CSCI442OPERATING SYSTEMS  3.0
BS ELECT Business Elective^&  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
15.0
Springleclabsem.hrs
CSCI400PRINCIPLES OF PROGRAMMING LANGUAGES  3.0
CSCI448MOBILE APPLICATION DEVELOPMENT, 445, or 446  3.0
BS ELECT Business Elective^&  3.0
HASS/EBGN HASS 400-Level Restricted Elective  3.0
FREE Free Elective  3.0
15.0
Total Semester Hrs: 128.5
*

CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

^

Four unique Business Electives must be chosen from: EBGN320EBGN321EBGN345EBGN346EBGN360EBGN425EBGN460EBGN485

&

If Business Elective is used to satisify H&SS Restricted Elective requirement, then an additional Business Elective or eligible CSCI Elective must be substituted.

BACHELOR OF SCIENCE IN COMPUTER SCIENCE-research honors 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 Elective Physical Activity Course  0.5
16.0
Springleclabsem.hrs
MATH112CALCULUS FOR SCIENTISTS AND ENGINEERS II  4.0
PHGN100PHYSICS I - MECHANICS  4.5
CSCI261PROGRAMMING CONCEPTS  3.0
EDNS151INTRODUCTION TO DESIGN  3.0
PAGN Elective Physical Activity Course  0.5
15.0
Sophomore
Fallleclabsem.hrs
MATH213CALCULUS FOR SCIENTISTS AND ENGINEERS III  4.0
PHGN200PHYSICS II-ELECTROMAGNETISM AND OPTICS  4.5
CSCI262DATA STRUCTURES  3.0
EBGN201PRINCIPLES OF ECONOMICS  3.0
CSCI274INTRODUCTION TO THE LINUX OPERATING SYSTEM  1.0
PAGN Elective Physical 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 Elective Physical Activity Course  0.5
FREE Free Elective  3.0
15.5
Junior
Fallleclabsem.hrs
MATH332LINEAR ALGEBRA  3.0
CSCI306SOFTWARE ENGINEERING  3.0
CSCI403DATA BASE MANAGEMENT  3.0
FREE Free Elective  3.0
GPGN350SCIENCE AND COMMUNICATION SKILLS  3.0
15.0
Springleclabsem.hrs
MATH201PROBABILITY AND STATISTICS FOR ENGINEERS  3.0
CSCI406ALGORITHMS  3.0
FREE Free Elective  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
CSCI ELECT Computer Science Elective*  3.0
15.0
Summerleclabsem.hrs
CSCI370ADVANCED SOFTWARE ENGINEERING  6.0
6.0
Senior
Fallleclabsem.hrs
CSCI480COMPUTER SCIENCE HONORS THESIS  3.0
CSCI442OPERATING SYSTEMS  3.0
HASS/EBGN HASS Mid-Level Restricted Elective  3.0
CSCI ELECT Computer Science Elective*  3.0
CSCI HONORS ELECT Computer Science Honors Elective^  3.0
15.0
Springleclabsem.hrs
CSCI480COMPUTER SCIENCE HONORS THESIS  3.0
CSCI400PRINCIPLES OF PROGRAMMING LANGUAGES  3.0
CSCI ELECT Computer Science Elective*  3.0
HASS/EBGN HASS 400-Level Restricted Elective  3.0
CSCI HONORS ELECT Computer Science Honors Elective^  3.0
15.0
Total Semester Hrs: 128.5
*

CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

^

CSCI honors electives approved by advisor (i.e., 500 level CSCI courses or honors independent study courses).

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

Combined BS/MS in Computer Science

The Department of Computer Science offers a combined Bachelor of Science/Master of Science program in Computer Science that enables students to work on a Bachelor of Science and a Master of Science simultaneously. Normally a Master's Degree requires 30 credit hours and takes two years to complete. Under the Combined Program, students will count two courses (CSCI406 and CSCI442) toward both degrees, and 24 additional credit hours are needed to complete the degree. One additional 400-level course may be counted toward the graduate degree, if the course is not counted towards the undergraduate degree. Students selecting the Thesis option will be required to complete 21 hours of coursework and a thesis (9 credit hours). Students selecting the Non-Thesis option will be required to complete 30 credit hours of coursework. There are two required graduate-level courses: CSCI564 (Advanced Architecture) and CSCI561 (Theory of Computation). The remaining courses are all electives except for the double counted courses. Descriptions can be found in the CS Graduate Bulletin.

Students may not apply for the combined program until they have taken five or more Computer Science classes at CSM (classes transferred from other universities will not be considered). This requirement may be met by any 200-level or above course with a CSCI prefix (e.g., CSCI261, CSCI306, CSCI442, etc.). Since CSCI370 (Field Session) is based almost exclusively on team work, it may not be counted as one of the five courses. Independent study courses (i.e., CSCI499) are also not included in the five courses. CSCI274 is a one credit hour course which also may not be counted as one of the five courses.

Students should have an overall GPA of at least 2.5 and a GPA of 3.2 for courses in the major. The calculation of GPA in the major will be based on all 200-level or above CSCI courses except those excluded above (i.e., CSCI274, CSCI370 and CSCI499). If a course is taken multiple times, all of the grades will be included into the GPA calculation. Interested students with a lower GPA must write an essay to explain why they should be admitted to the program.

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
*

CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

^

CSCI358 may be substituted for one CSCI Elective if the student does not meet the pre-requisites for CSCI406

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
*

 CSCI Electives can be chosen from any 400-level CSCI course, MATH307, and EENG383. Please see the Courses Tab for course listings.

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
^

PHGN215 may be used in place of EENG281/282 with pre-approval by the student's major program director. 

*

 PHGN317 may be used in place of EENG284 with pre-approval by the student's major program director.

If a student is in a major that does not require CSCI261, then the student must take only three of the four CSCI courses listed. 

 At most 6.0 credits of this minor can be counted toward another minor degree program.

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, S) 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-requisites: 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. Prerequisite: none. 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, hash tables. Introduction to algorithm analysis, with emphasis on sorting and search routines. Language skills: abstract data types, templates and inheritance. Prerequisite: CSCI261 with a grade of C- or higher. 3 hours lecture; 3 semester hours.

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. Prerequisites: CSCI 261. 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.

(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. Prerequisites: 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. 6.0 Semester Hrs.

(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. 6-week summer session; 6 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) 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, CSCI358 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. Prerequisites: 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.

(I) 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. Repeatable: Yes, if taught on a different platform (e.g., Android vs. iPhone) up to 6 hours. 3 hours lecture; 3.0 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.