Students majoring in other academic fields who wish to complete a minor in computer science must complete at least 18 hours of computer science, of which at least 6 semester hours must be at or above the 3000 level. The content of the course work for the minor must include the equivalent of:
|COSC 1435||Introduction to Problem Solving with Computers I||4|
|COSC 1436||Introduction to Problem Solving with Computers II||4|
|COSC 2437||Data Structures 1||4|
|Select 6 hours of Approved Computer Science electives (at or above the 3000 level)||6|
It is assumed that the student has completed all mathematics prerequisites and corequisites for the required courses.
Any 3000 level COSC course will satisfy except:
|COSC 3371||Computer Information Systems Economics||3|
|COSC 3400||Skills for Computing Professionals||4|
|COSC 4100||Skills for Computing Professionals II||1|
|COSC 4354||Senior Capstone Project||3|
|COSC 4690||Contracted Field Experience in Computer Science||1-6|
A balanced introduction to the use and application of computers in modern society involving both descriptive information and hands-on laboratory participation. Includes a discussion of the general principles of operation of a computer and a brief history of the development of computing. The use of a personal computer operating system, common application software, and simple computer programming concepts are introduced. Satisfies university computer literacy requirement.
Introduces the fundamental concepts of structured programming in the C language. Topics include data types; control structures; functions, structures, arrays, pointers, pointer arithmetic, unions, and files; the mechanics of running, testing, and debugging programs; introduction to programming; and introduction to the historical and social context of computing.
Prerequisite: (MATH 1314).
Introduction to computer programming for solving discipline specific problems using computers. Emphasis on the fundamentals of structured design, development, testing, implementation, and documentation. Includes coverage of language syntax, data and file structures, input/output devices, and disks/files.
This course introduces the fundamental concepts of problem solving and algorithms. A brief introduction to computers and the programming life cycle is covered. The C++ programming language is used to develop basic computer programs demonstrating data types, fundamental control structures, functions, and arrays. MATH 1314 or placement beyond MATH 1314. Offered Fall, Spring, Summer.
Prerequisite: MATH 1314.
This course is a continuation of COSC 1435. An introduction to abstract data types and object-oriented programming is covered. Topics include basic searching and sorting algorithms, dynamic allocation, linked lists, inheritance, polymorphism, and recursion.
This course will teach students the techniques for computer game design and how to work as part of a game development team from initial conception through release, including the game design process, game concepts, how and why we play games, character development, storytelling, user experience, game play, and core mechanics of games.
A concentrated study of internal computer concepts. Computer organization, machine and assembly language are emphasized.
This course introduces students to Windows and Unix/Linux shell scripting. The course covers basic scripting concepts including decision statements, control statements, functions and files manipulation. Advanced scripting tools such as grep, awk and sed are covered in this course.
Prerequisite: (COSC 1435).
This course introduces students to cyber security. A broad range of cyber security issues will be covered, including social engineering attacks, secure coding, computer security, Internet of Things (IoT) security, mobile security, data security, network security, physical security and forensics. This course will cover the concepts of prevention, detection, and response to cyber security threats. Offered Fall and Spring.
Prerequisite: (COSC 1435).
Variable content. May be repeated for credit depending on topic. Offered on sufficient demand. Does not count toward total hours required for BS in Computer Science.
This is a selected topics course with no lab component. Variable content. May be repeated for credit depending on topic. Offered on sufficient demand. Does not count toward total hours required for BS in Computer Science.
This course provides a thorough study of standard structures used in the storing and retrieving of data and the processes by which these structures are created and manipulated. Topics include: object oriented design, linked lists, classes, trees, graphs, hashing, stacks, queues, sorting, searching, and recursion. A grade of C or better is required in the course to receive credit towards the Computer Science BS program.
This course focuses on providing students with essential knowledge and skills to implement, administer, and troubleshoot servers in a networked environment. Operating system concepts, such as installing a standalone system, file systems authentication, and user support services are explored. Topics will include security issues, user and group administration, active directory services, DHCP, DNS, SSH, backup and restoration strategies and techniques, integrated mass storage technologies and alternative client technologies.
This course focuses on the standards and technologies used to establish inter-network structures that will support a TCP/IP data stream for higher-level services to operate over. This course introduces local area networks (LAN) and wide area networks (WAN). Topics include the TCP/IP and open system interconnection (OSI) models, cabling, switches, routers, protocols, subnetting, and networking hardware and software. Initial switch and router configuration will be examined and evaluated.
A concentrated study of the COBOL language as applied to fundamental business computing problems and other data management applications.
This course focuses on beginning to develop professional skills that computer scientists will need to be successful in their careers and lives. Communication skills will include writing and giving oral presentations. Ethical issues will be explored. This is a class for computing professionals. As such, professional decorum will be required at all times.
This course introduces students to cyber security. A broad range of cyber security issues will be covered, including social engineering attacks, secure coding, computer security, Internet of Things (IoT) security, mobile security, data security, network security, physical security and forensics. This course will cover the concepts of prevention, detection, and response to cyber security threats.
A study of concepts, terminology, and methodologies used in object-oriented systems, languages, and applications. Students will design and implement software systems using object-oriented analysis and design techniques.
This course will introduce the student to techniques and tools used for all aspects of programming games. Topics will include game graphics, game physics, game AI, and sound. The course will contain lectures and hands-on labs. Students will work independently and in teams.
This course introduces software development for Unmanned Systems (US). Students will be introduced to a variety of relevant topics including the different US platforms, design and implementation of algorithms for US, user interface for US, and state-of-the-art US applications, challenges & solutions.
A study of contemporary database management system concepts, terminology, and methodology for use and implementation. Commercially available systems are discussed and used with emphasis upon the relational model.
Introduction to operating systems concepts, principles, and design. Topics include: processes and threads, CPU scheduling, mutual exclusion and synchronization, deadlock, memory management, file systems, security and protection, networking, and distributed systems. Selected existing operating systems are discussed, compared, and contrasted.
Study of prominent web technologies with a focus on creating interactive web applications. Both client-side and server-side programming will be covered. Students will design and implement a web based project using technologies covered in class.
This course introduces software development for mobile platforms. Students will learn skills for creating and deploying mobile applications. Includes software engineering topics as related to mobile programming, primarily in how software design differs on mobile platforms.
A study of selected programming languages for students familiar with programming. Students will write programs in a variety of languages.
This course introduces concepts and techniques for Human Computer Interaction. Particular emphasis will be placed on vision, audio, and language solutions for use in human-computer interactive systems. In addition, the students will learn how to apply the methods to solve simple HCI problems.
Prerequisite: COSC 1436.
This course introduces students to software engineering principles for the development and maintenance of high quality large software systems. Topics include: software life cycle, delivering on time and within budget, and the development and application of processes and tools for managing the complexities inherent in creating these systems.
An introduction to concepts in information technology and software engineering with a focus on economics and managerial issues. Topics include cost benefit analysis, software and effort estimation, feasibility analysis, information systems proposals, software team coordination, and project management. May not be used as a CS elective for CS majors.
This course provides an introduction to the fundamentals of computer and network security and security laws and ethics, topics include, identification of vulnerabilities, forms of attack, appropriate countermeasures, and the detection and defense of the same. Techniques for the securing of hardware, software and data, including physical security are covered.
Prerequisite: COSC 2465.
This course introduces students to the principles for software project management for small and medium-size projects. Many aspects of software project management, including management process, scope definition, time and cost estimation, quality control, human resources, communication, risks and project procurement management will be discussed. A number of applications and tools will be used to implement a class project.
Prerequisite: (COSC 3370).
This course introduces concepts for solving problems numerically using computers. Students will learn about number systems, errors of finite representation, and iteration. A survey of basic numerical methods including: solutions to nonlinear equations, solutions to linear systems, approximation, interpolation, zeros of functions, numerical differentiation and integration, and Monte-Carlo methods.
This course focuses on the professional skills that computer scientists will need to be successful in their careers. There are two key areas of study, communication skills needed by computer scientists and their ethical responsibilities. Communication skills will include: technical writing from a computer science perspective, presentation skills, client interviewing, and reading technical articles. Ethical issues will be explored from a computer science perspective.
Prerequisite: ENGL 1302.
This course covers cryptographic tools, cryptographic algorithms, types of malicious software, forms of attacks and software security. Strengths and weaknesses of cryptographic systems are covered as well as the types of attacks on cryptographic systems. Malicious activity signatures, analysis as well as detection will be covered. This course will also cover secure coding principles and types of software issues.
Prerequisite: COSC 3372.
This course focuses on technical writing, workplace scenarios and professional skills that computer scientists will need to be successful in their careers and lives. This is a class for computing professionals. As such, professional decorum will be required at all times.
Prerequisite: COSC 1100 and ENGL 3310.
This course will introduce undergraduate students to the fundamentals of computer forensics and cyber-crime scene analysis. The various laws and regulations dealing with computer forensic analysis will be discussed. Students will be introduced to the emerging international standards for computer forensic analysis, as well as a formal methodology for conducting computer forensic investigations. Several Forensics tools such as Encase and FTK will be used to conduct digital forensics investigations.
This course introduces concepts and techniques for image processing. The objective of this course is to introduce the fundamental techniques and algorithms used for processing and extracting useful information from digital images. The students will learn how to apply the image processing methods to solve real-world problems.
This course will introduce advanced concepts for game programming to the student. Topics will include game physics, game AI, advanced shaders, 3D techniques, multiplayer techniques, and networking. The course will contain lectures and hands-on labs.
Prerequisite: COSC 3325.
Basic principles and techniques for computer graphics on modern graphics hardware. Students will gain experience in interactive computer graphics using the OpenGL API. Topics include: 2D viewing, 3D viewing, perspective, lighting, and geometry.
Foundations, directions, and applications of artificial intelligence including search algorithms, knowledge acquisition, representation, and processing. Students will gain practical experience by implementing many of the basic algorithms.
Computer-based communication systems. Topics include: advanced computer network architectures, protocols, and programming.
Advanced programming techniques for algorithmic and heuristic solutions of problems. Topics include: analysis and design of algorithms, testing of algorithms, optimum and exhaustive solutions, and recursion.
This course gives a broad introduction to machine learning with more emphasis on intelligent system design. Topics to be covered include linear and logistic regression, neural networks, clustering, classification, decision tree, evolutionary computation, feature selection, and reinforcement learning. The courses will explore various applications of machine learning to computer science, process modeling, pattern and speech recognition, data mining, and bioinformatics.
The design and implementation of system software such as device drivers, application support libraries, and interprocess communication. Students will study and use systems programming tools.
This course introduces the basic concepts and mechanisms traditionally employed in language translators, with emphasis on compilers. Topics include: strategies for syntactic and semantic analysis, techniques of code optimization and approaches toward code generation.
Prerequisite: COSC 3353.
Teamwork and formal methods of systems analysis and design are emphasized. Students will complete a large team project. Fall, Spring.
The study of programming language design including syntax, semantics, behavior, and implementation issues in imperative, functional, logic, and object-oriented languages. Other topics include type theory, concurrency, data dependency, and nondeterminism.
This course focuses on advanced system administration topics. An in depth understanding of various concepts such as operating systems, servers, file systems authentication, and user support services are explored. Topics include security issues, user and group administration, server and work-station integration, central repositories for updates, Active directory, DMZ, web servers, email servers, electronic system update and maintenance, backup and restoration strategies and techniques, integrated mass storage technologies and alternative client technologies.
This is an applied course which focuses on the standards and technologies used to establish inter-network structures that will support a TCP/IP data stream for higher-level services to operate over. This course introduces firewalls, Intrusion Prevention Systems (IPS), and Intrusion Detection Systems (IDS) technology. Topics include Windows, Linux, Check Point and Cisco firewalls, TCP/IP and open system interconnection (OSI) models, attack traffic analysis, and network based and host based hardware and software. Device configuration will be examined and evaluated with appropriate exercises.
This course focuses to increase the students understanding of how to recognize a potential cyber attacker and identify vulnerabilities through the use of vulnerability analysis tools. Students will audit, monitor, and revise system security to ensure appropriate levels of protection are achieved. Incident response and handling, security log analysis, attacker identification, system recovery and postmortem procedures will be addressed.
This course focuses on the standards and technologies used to establish organization structures that will support information technology incident response, business continuity and disaster recovery efforts. This course introduces incident response, business continuity and disaster recovery planning concepts as well as tools and techniques. Topics include the development and implementation of incident response, business continuity and disaster recovery plans, attack traffic analysis, and network-based and host-based hardware and software. Concepts will be examined and evaluated with appropriate exercises.
A study of formal languages, grammars, and associated abstract machine models. Topics include regular and context-free languages and grammars, finite state automata, Turing machines, and the Chomsky hierarchy.
Prerequisite: MATH 2305.
See College description. Offered on sufficient demand.
Variable content. May be repeated for credit depending on topic. Offered on sufficient demand.
Prerequisite: COSC 4365.
Individual contract agreement involving student, faculty, and cooperating agency to gain practical experience in off-campus setting.