Academic Catalog

Department of Computer Science

The Department of Computer Science at Fort Hays State University offers an online and on-campus Bachelor of Science degree and an online Master of Science degree in Computer Science. Work with our experienced faculty to acquire the programming knowledge and credentials to become an innovator and collaborator for your future employer.

Computer Science is an area of study that involves programming, human-computer interaction, and information security. Graduates from Fort Hays State University are prepared to enter the workforce as capable programmers and problem solvers, and they possess the knowledge and skills necessary to advance steadily in their careers. Earning a degree in computer science will place you in high demand at a variety of federal agencies and private software and technology companies.

CSCI 111  Survey of Computer Science     (3 Credits)  

Survey of selected topics in Computer Science such as the history of computing, number systems, data representation, combinatorial circuits, computer architecture and organization, algorithms, programming paradigms and languages, artificial intelligence, computer graphics, the roles of operating systems and networks, social, legal, and ethical issues in computing.


  
Eligibility Rules: Has completed MATH 010, MATH 110, MATH 130, or MATH 234  
  
  
CSCI 121  Computer Science I     (3 Credits)  

An introduction to computer programming in a high-level programming language. Topics include data types, sequential and indexed collections, the design, definition, and application of functions, conditional expressions, iteration and recursion.


  
Eligibility Rules: Has completed MATH 110 or has an ACT Composite score greater than or equal to 22 and an ACT Math score greater than or equal to 22 or has an SAT Total score of 1110 and an SAT Math score greater than or equal to 540  
  
  
CSCI 199  Computer Science Elective  (1-12 Credits)  
This course is designed to receive non-equivalent elective transfer credit.

  
CSCI 221  Computer Science II     (3 Credits)  
Continued introduction to computer programming in a high-level programming language. Interactive programming, data file access, error detection and handling, elementary data structures, sorting, searching, higher-order functions.

  
Eligibility Rules: Has completed CSCI121  
  
  
CSCI 231  Object-Oriented Programming     (3 Credits)  
Principles of object-oriented design and programming such as classes, objects, composition, inheritance, and polymorphism. Development of applications utilizing languages supporting object -orientation.

  
Eligibility Rules: Has completed CSCI121  
  
  
CSCI 241  Foundations of Computing     (3 Credits)  
Logical and mathematical foundations of computer science, including topics such as logic, proof, algorithms, recursive processes, combinatorial analysis, algorithm complexity, graphs, and theory of computation.

  
Eligibility Rules: Has completed CSCI121, MATH234  
  
  
CSCI 251  Data Structures     (3 Credits)  
Data structures such as linked lists, stacks, queues, trees, maps, and graphs and their accompanying alorithms and their analysis.

  
Eligibility Rules: Has completed CSCI221, CSCI241  
  
  
CSCI 321  Assembly Language     (3 Credits)  

Assembly language programming and processor architecture. Includes low-level programming techniques, memory and registers, the run-time stack.


  
Eligibility Rules: Has completed CSCI221  
  
  
CSCI 331  Operating Systems     (3 Credits)  
History and functions of operating systems and associated structures. Topics include management of a processor, processes, memory and auxillary storage.

  
Eligibility Rules: Has completed CSCI251  
  
  
CSCI 399  Computer Science Elective  (1-12 Credits)  
This course is designed to receive non-equivalent elective transfer credit.

  
CSCI 421  Programming Languages     (3 Credits)  
A comparative survey of programming language paradigms, including the properties, applications, syntax, and semantics of selective imperative, functional, object-oriented, and logic programming languages.

  
Eligibility Rules: Has completed CSCI251  
  
  
CSCI 431  Computer Graphics     (3 Credits)  

Raster graphics algorithms, transformations, orthographic and perspective projection, hidden surface elimination, surface shading, the graphics pipeline, color models. Application development utilizing a graphics API.


  
Eligibility Rules: Has completed or currently enrolled in CSCI 251  
  
  
CSCI 441  Software Engineering     (3 Credits)  

Software engineering concepts, terminology, and the disciplined development of software systems, including topics such as requirements analysis, design methodologies, testing strategies, management, and quality assurance. In a semesterlong project, students develop, test and document a software system.


  
Eligibility Rules: Has completed CSCI251  
  
  
CSCI 601  Advanced Programming     (3 Credits)  

This course will take a deep dive into several advanced concepts of programming and explore larger-scale application development using the language. Students will learn system programming, classes and objects, Persistence and Databases, Advanced Data Handling, GUI programming, and covering some of the fundamental topics in more detail and adding new ones. At the end of this course, students will have the necessary tools to start digging into other areas of specialization. The student is expected to have a sound background in programming.


  
  
  
  
CSCI 601G  Advanced Programming     (3 Credits)  

This course will take a deep dive into several advanced concepts of programming and explore larger-scale application development using the language. Students will learn system programming, classes and objects, Persistence and Databases, Advanced Data Handling, GUI programming, and covering some of the fundamental topics in more detail and adding new ones. At the end of this course, students will have the necessary tools to start digging into other areas of specialization. The student is expected to have a sound background in programming.


  
Eligibility Rules: Has completed INF360 or INF601G, or Permission  
  
  
CSCI 612  Fundamentals of Research     (3 Credits)  

This course presents the fundamentals of scientific research in the area of Computer Science. It covers a collection of basic concepts and terminologies in research methods with a goal of producing well-written manuscripts for publication in peer-reviewed journals. Special emphasis is placed on problems typically encountered by young researchers as well as possible solutions to those problems.


  
  
  
  
CSCI 612G  Fundamentals of Research     (0 Credits)  

This course presents the fundamentals of scientific research in the area of Computer Science. It covers a collection of basic concepts and terminologies in research methods with a goal of producing well-written manuscripts for publication in peer-reviewed journals. Special emphasis is placed on problems typically encountered by young researchers as well as possible solutions to those problems.


  
  
  
  
CSCI 631  Advanced Operating System     (0 Credits)  

Principles of modern operating systems, including embedded operating system, virtual machine, cloud and IoT operating systems, networking protocols and distributed operating systems.


  
  
  
  
CSCI 650  Interactive Systems Design  +  (1-3 Credits)  
See INT 650 Topics in Information Networking and Telecommunications for course description.

  
  
  
  
CSCI 650G  Interactive Systems Design  +  (1-3 Credits)  
See INT 650 Topics in Information Networking and Telecommunications for course description.

  
Eligibility Rules: Academic level is Masters, EdS, Grad Non-Degree OR Doctoral  
  
  
CSCI 651  Advanced Data Structure     (0 Credits)  

This course covers advanced topics in data structures for working with structured data. The students will develop, implement, and analyze various data structure algorithms to solve real world problems. The course covers the following topics: disjoint sets, self-balanced trees, segment trees, heaps, hash tables, and tries.


  
  
  
  
CSCI 653  Advanced Database Management     (0 Credits)  

This course covers advanced aspects of database management including normalization, query optimization, distributed databases, data warehousing, and big data. Students learn how to use object-oriented technologies to design relational databases and how to design relational databases to support object-oriented applications. There is extensive coverage and hands on work with SQL, and database instance tuning. The additional topics covered in this course will help you become more proficient in writing queries and will expand your knowledge base so that you have a better understanding of the field. The goal is to provide students with an advanced understanding of database design, implementation, and management concepts and techniques. Students complete a term project exploring an advanced database technology of their choice.


  
  
  
  
CSCI 663  Introduction to Cryptography     (3 Credits)  
This course considers the basic knowledge of cryptography, both traditional and modern. This knowledge is the basis for future studies on network security.

  
Eligibility Rules: Has completed CSCI231, MATH234  
  
  
CSCI 663G  Introduction to Cryptography     (3 Credits)  

This course considers the basic knowledge of cryptography, both traditional and modern. This knowledge is the basis for future studies on network security.


  
Eligibility Rules: Academic level is Masters, EdS, Grad Non-Degree OR Doctoral  
  
  
CSCI 664  Networks and Data Communications     (3 Credits)  
See MIS 650 Networks and Data Communications for course description.

  
  
  
  
CSCI 664G  Networks and Data Communications     (3 Credits)  
See MIS 650 Networks and Data Communications for course description.

  
Eligibility Rules: Academic level is Masters, EdS, Grad Non-Degree OR Doctoral  
  
  
CSCI 666  Data Mining and Knowledge Discovery     (0 Credits)  

This course gives a comprehensive overview of data mining fundamental concepts, algorithms, and its applications. It covers important sections on classification, association analysis, and cluster analysis. Students will learn analyzing of variant data sets that integrates results from disciplines such as statistics, predictive models, data bases, pattern recognition, and text mining. A major productive analytics project on a real data set is required.


  
  
  
  
CSCI 673  Problems  +  (1-4 Credits)  

Miscellaneous problems from or an investigation of some phase of undergraduate computer science possibly not treated in a regular course.


  
  
  
  
CSCI 673G  Problems  +  (1-6 Credits)  
Miscellaneous problems from or an investigation of some phase of undergraduate computer science possibly not treated in a regular course.

  
  
  
  
CSCI 675  Seminar in Software Engineering  +  (1-3 Credits)  

Capstone course that may include 1) attendance at 30 seminars, a software project, a paper describing the project, and an oral presentation of the paper; OR 2) a coding exam, and a comprehensive exit exam on computer science fundamentals. 


  
Eligibility Rules: Has completed CSCI251  
  
  
CSCI 675G  Seminar in Software Engineering  +  (1-3 Credits)  
Students prepare a paper on a software engineering or computer science topic and give an oral presentation to the seminar group.

  
Eligibility Rules: Academic level is Masters, EdS, Grad Non-Degree OR Doctoral  
  
  
CSCI 677  Internship     (3 Credits)  

The student will perform meaningful professional work.


  
  
  
  
CSCI 677G  Internship     (3 Credits)  

The student will perform meaningful professional work.


  
  
  
  
CSCI 681  Advanced Networking and Data Communications     (0 Credits)  

Theory, design, protocols, security, and algorithms of computer networking.


  
  
  
  
CSCI 681G  Application Layer Programming     (0 Credits)  

Design and programming with different programming languages in networking application layer.


  
  
  
  
CSCI 682  Application Layer Programming     (3 Credits)  

Design and programming with different programming languages in networking application layer.


  
  
  
  
CSCI 682G  Application Layer Programming     (3 Credits)  

Design and programming with different programming languages in networking application layer.


  
  
  
  
CSCI 812  Advanced Database Management     (3 Credits)  

This course covers advanced aspects of database management including normalization, query optimization, distributed databases, data warehousing, and big data. Students learn how to use object-oriented technologies to design relational databases and how to design relational databases to support object-oriented applications. There is extensive coverage and hands on work with SQL, and database instance tuning. The additional topics covered in this course will help you become more proficient in writing queries and will expand your knowledge base so that you have a better understanding of the field. The goal is to provide students with an advanced understanding of database design, implementation, and management concepts and techniques. Students complete a term project exploring an advanced database technology of their choice.


  
Eligibility Rules: Has completed INF652 or INF652G  
  
  
CSCI 831  Advanced Operating Systems  (3 Credits)  

This is a graduate course that discusses advanced topics in distributed operating systems. The covered topics are Synchronization, Consistency and Replication, Distributed Shared Memory, Fault Tolerance and Security, and Distributed File Systems.

This course builds upon the topics covered in a typical undergraduate operating systems course, such as Process Synchronization, Interprocess Communication, and File System Organization. After a brief review, these topics are studied in the context of distributed operating systems.

Prerequisites: CSCI 331 or equivalent.


  
CSCI 841  Advanced Software Engineering     (3 Credits)  

Advanced topics on software engineering. Emphasis on software reuse, various software design patterns, software configuration, models and processes, software engineering management, and testing.


  
Eligibility Rules: Has completed CCSI441 or Permission for CSCI841  
  
  
CSCI 851  Advanced Data Structures     (3 Credits)  

This is an elective course in the Computer Science program. It covers advanced topics in data structures such as disjoint sets, self-balanced trees, segment trees, heaps, hash tables, and tries. The students will develop, implement, and analyze the selected data structures and algorithms to solve real-world problems. In addition to reading the assigned materials, students will have to do homework, projects implemented in c-programming language, quizzes, and exams.  


  
Eligibility Rules: Has completed CSCI251 or Permission for CSCI851  
  
  
CSCI 866  Data Mining and Knowledge Discovery     (3 Credits)  

This course gives a comprehensive overview of data mining fundamental concepts, algorithms, and its applications. It covers important sections on classification, association analysis, and cluster analysis. Students will learn analyzing of variant data sets that integrates results from disciplines such as statistics, predictive models, data bases, pattern recognition, and text mining. A major productive analytics project on a real data set is required.


  
  
  
  
CSCI 871  Project  +  (0 Credits)  

A required course for Project Option of Computer Science Master Program. Student writes, demonstrates, and defends a software project that solves real world problem.


  
  
  
  
CSCI 891  Research Thesis  +  (0 Credits)  

A required course for Thesis Option of the Computer Science Master Program. Write and defend a research thesis on a subject in modern computer science or an interdisciplinary field that is related to computer science.

PR: CSCI 601, CSCI 631, CSCI 653, CSCI 665


  
  
  
  
CSCI 896  Digital Image Processing     (3 Credits)  

This course presents the principles and tools used to process and analyze images, and how to apply them to solve practical problems. It will cover the fundamentals of image processing, and will provide a mathematical framework to describe and analyze images. It focuses on spatial transformation, linear and nonlinear filtering, image enhancement, histogram equalization, image restoration and reconstruction, image compression, feature extraction, image pattern classification. In all cases, example images pertaining to specific application domains will be utilized.


  
  
  
  
CSCI 897  Project  +  (3 Credits)  

A required course for Project Option of Computer Science Master Program. Student writes, demonstrates, and defends a software project that solves real world problems.


  
  
  
  
CSCI 899  Research Thesis     (3-6 Credits)  

A required course for Thesis Option of Computer Science Master Program. Write and defend a research thesis on modern computer science or an interdisciplinary field related to computer science.