College of Engineering

Compute Science Minor Courses

Course Descriptions for the Computer Science Minor:
Required:

COMP 163. Introduction to Computer Programming (Formerly GEEN163) Credits 3(2-2)
This is an introductory course in computer programming. Problem solving techniques and writing algorithms will be stressed. Students will write programs for such tasks as engineering decision-making and numerical computation. Prerequisite: None (F;S;SS)


COMP 167. Computer Program Design (Formerly GEEN165) Credits 3(2-3)
This is a second course in computer programming for students with an interest in computers. Students will learn to write programs in a high level programming language. Prerequisite
COMP163 (F;S;SS)


COMP 180. Discrete Structures Credits 3(3-0)
Students will be introduced to formal systems, including propositional and predicate logic, that can be used to reason about computer algorithms. Students will develop an understanding of how to read and construct valid proofs of the properties of algorithms. Important discrete data structures, such as sets, relations, discrete functions, graphs and trees, will be introduced. Prerequisite: MATH110 or MATH131 (F;S;SS)


COMP 280. Data Structures Credits 3(3-1)
This is the third course in the computer science sequence. It introduces abstractions (algorithm, data type, complexity) and programming tools (pointers, dynamic memory, and linked data lists, and graphs). It analyzes and implements techniques such as hashing, sorting, searching, and priority queues, to solve general problems. The emphasis of the course is on building modular programs that can be changed to use different data structures and algorithms. Prerequisites: COMP 167 and (MATH 123 or COMP 180 or ECEN227). (F;S;SS)


COMP 285. Design and Analysis of Computer Science Credits 3(3-0)
This course covers analysis of efficient algorithms for sorting, searching, dynamic structure manipulation, path finding, fast multiplication, and other problems. It introduces algorithmic techniques such as recursion, divide-and-conquer, and dynamic programming. It develops the following tools for algorithmic analysis: correctness proofs, algorithm synthesis, and discusses issues in non-computability. This course also overviews non-deterministic algorithms, and develops techniques to classify computationally hard problems. The concept of non-deterministic polynomial (NP)-completeness is introduced, and basic issues related to NP-completeness are discussed. Prerequisites: COMP 280, MATH 131. (F;S;SS)

ECEN 227 - Discrete Systems Modeling Credits 3(3-0)
This course is an introduction to applied discrete mathematics as it relates to computer engineering.  Topics include set theory, propositional logic, functions, relations, recursion, Boolean algebra, applications of elementary graph theory, trees, and mathematical techniques for algorithm analysis. Prerequisites: ECEN 101. (F;S;SS)

Electives:

COMP 267. Database Design (Formerly COMP467) Credits 3(3-0)
This course focuses on logical and physical organizations of sets of related data. It covers issues in file structures as well as file and database management systems. It explores relational models, hierarchical models, directed graph models, data definition and manipulation languages, and relational calculus. Application oriented projects are required. Prerequisite: COMP 280. (F;S)


COMP 320. Fundamentals of Information Assurance Credits 3(3-0)
This course covers concepts in computer network and information security. Topics include: software strategies for exchanging secure data and encryption standards. Strategies for the physical protection of information assets are explored. Issues involving information security management within an enterprise are covered, including suitable organizational policy, plans, and implementation strategies. Ethical issues, such as monitoring employee computer use and proper limitations on the use of customer data, are also discussed. Prerequisite: COMP280 (F;S;SS)


COMP 322. Internet Systems Credits 3(3-0)
This course addresses the structure and functionality of the Internet and software that exploits it. Topics include mark up languages, Web tools, static, dynamic and active web pages, multimedia in Web applications, communication protocols, client-server, computing, scripting, group and coordinating work at different sites, multi-agent systems that exploit the Internet, and architectures to exploit the distributed computational power offered by the Internet. Prerequisite: COMP 280 (F;S;SS)


COMP 340. Game Intelligence Credits 3(3-0)
This course provides an overview of concepts used in game intelligence. Topics will include intelligent game agents, game state representation, search, and machine learning. Prerequisite: COMP280 (F;S;SS)


COMP 350. Operating Systems (Formerly COMP450) Credits 3(3-0)
This is and introduction to the theory and practice of operating system design and implementation.  Algorithmic techniques are presented for implementing process management, storage management, processor management, file systems, security, distributed systems, performance evaluation, and real time systems.  Prerequisite: COMP 280. (F;S)

COMP 360. Programming Languages Credits 3(3-0)
This course focuses on formal specification of programming languages, including definition of syntax and semantics: simple statements including precedence, infixes, prefix, and postfix notations. It highlights global properties of algorithmic languages including sequence control, data structure implementation, scooping, storage management, grouping of statements, binding time, sub-routines, and tasks.  Prerequisite: COMP 280 (F;S;SS)


COMP 361. Data Analytics in Python Credits 3(3-0)
This course teaches how to develop efficiently well-designed, well-documented, tested, and integrated Python code for users to solve problems in data analytics. The student will become proficient with standard Python packages in NumPy (numerical computing) pandas (data manipulation and analysis), Matplotlib (plotting), ggplot2 (visualization), and statsmodels and other statistical packages. The student will also be introduced to machine learning (package scikitlearn), natural language processing (package NLTK), and network science (package NetworkX).  Prerequisites: COMP 280, MATH351, Statistics Electives (F;S)


COMP 365. Artificial Intelligence & Machine Learning Credits 3(3-0)
This course discusses the theory and applications of artificial intelligence with a focus on machine learning. It covers the concepts related to search, knowledge representation, logical reasoning, supervised learning and unsupervised learning. Also, students will write computer programs implementing artificial intelligence and machine learning concepts. Prerequisites: COMP285 (F;S;SS)


COMP 375. Computer Architecture and Organization Credits 3(3-0)
This course explores the design of computer systems and their architectures. Topics include central processing unit architecture, microcode, system interconnections, memory systems, input/output systems, interrupt handling, peripherals and communications networks. Prerequisites: COMP280 or ECEN327 (F;S)


COMP 385. Theory of Computing Credits 3(3-0)
This course is the study of topics, which include theory of finite state machine and automata; regular expressions; Turing machines; grammars; parsing; language hierarchy; machine design and construction; computability; insolvability; halting problem; computational complexity; and recursive functions. The course also discusses issues in equivalence of various computational models, minimization, and characterizations. Prerequisites: COMP 360. (F;S)

COMP 390. Social Implications of Computing Credits 3(3-0)
This course examines the increasingly complex interaction between computer systems, our social fabric and ethics. Software and microprocessors control automobiles, banks, brokerage trading, aircraft, medical equipment, and just about every other device used in industrialized nations.  Impacts of computerized systems upon personal privacy and citizen involvement in governance are examined in relation to the public policy questions of the day. The role and opportunity for historically under-represented groups will be explored. Interdisciplinary readings are stressed, along with required written and oral presentations and class debates. (F;S)

COMP 410. Software Engineering (Formerly COMP510) Credits 3(3-0)
This course is an introduction to the principles underlying software specification, implementation, validation, and management. It addresses applications of software engineering concepts to large software systems. Team effort is emphasized throughout the course. Prerequisite: COMP285 (F;S)


COMP 420. Applied Network Security Credits 3(3-0)
This course covers network security concepts and various network security practices and solutions.  Topics include cryptography, Public Key Infrastructure (PKI), taxonomy of various attack methods, firewalls, intrusion detection and prevention, Internet Protocol (IP) security, and web security. Prerequisite: COMP285 (F;S;SS)


COMP 440. Game Design Credits 3(3-0)
This course will provide an introduction to current techniques used in game design. Topics will include game engines, game mechanics, autonomous game agents, and multi-player games. Prerequisite: COMP285 (F;S;SS)


COMP 452. Network Science Credits 3(3-0)
This course considers empirical aspects of various kinds of networks, formal modeling and analysis of networks, and epecially computational modeling and analysis. To this end, the course thoroughly covers a standard soffware package for network analysis and the language using the package, and it introduces packages for allied activities including machine learning. All analysis is accompanied by use of the package. Cloud resources are used for familiarity with big-data aspects, and public network libraries are used. Assignments have conceptual, formal, and especially programming components. Students should have programming experience. Prerequisite: COMP285. (F:S:SS)


COMP 476. Networked Computer Systems Credits 3(3-0)
This course presents an overview of the technology, architecture and software used by systems of network-connected computers. The course will cover data transmission, local area network architecture, network protocols, internetworking, security, and World Wide Web technology. Students will write programs that run concurrently on multiple computers. Prerequisite: COMP 280 or ECEN327.(F;S)


COMP 485. Special Topics in Computer Science (Formerly COMP590) Credits 3(3-0)
This course permits the exploration of advanced topics pertinent to student’s program of study in a seminar setting. (F;S)


COMP496. Senior Project II Credits 3(3-0)
This course allows students the opportunity to design and implement a software project from start to finish. Projects started in COMP495 must be completed in this course for students working on a year-long project. Student choosing to do a semester project must start and complete the project in this course. This course gives the student the opportunity to work on a software project of significant size. Prerequisite: COMP410. (F;S;SS)


MATH 360 - Numerical Analysis Credits 3(3-0)
This course is an introduction to principles and techniques of numerical mathematics. Topics in round-off error analysis, the approximation of functions, derivatives and integrals, and the numerical solutions of non-linear equations, ordinary differential equations and the systems of linear equations will be studied. Prerequisites: MATH 231, MATH 240, MATH 350.


MATH 365 - Introduction to Data Science Credits 3(3-0)
This course will cover the essential elements of data science: data collection and management, manipulating and visualizing data, utilizing basic ideas of statistical inference and machine learning. Students will gain hands-on experience using the Python or R programming environment, and through empirical data science case studies and class projects. Prerequisites: STAT 214 or MATH 224. (F;S;SS)


CST 340 - Intro Mainframe Operations Credits 3(3-0)
This course is an introduction to mainframe operations including concepts and functions of the OS/MVS operating system. Topics include: virtual storage, Job Control Language (JCL), data management, data organization, compilers, and linkage editor. Additional topics include; study of instream data sets, portioned data sets, temporary and cataloged sequential data sets, and cataloged procedures. Prerequisites: CST 140. (F;SS)