Undergraduate Computer Science Courses
COSC 1302. Introduction to Computer Science. 3 Credit Hours (Lecture: 2 Hours, Lab: 2 Hours).
History of computers and of their applications in a variety of fields, both as PCs and as embedded systems. Overview of programming paradigms. Overview of today's most dynamic computer-related technologies, including communication networks, the Internet and artificial intelligence. Ethical and social problems associated with computers and programming. A modern programming language is used to present types of problems that can be solved with computers, the underlying algorithms, and the fundamental limitations. Students apply their newly-acquired programming skills to performing basic information-processing tasks. Lab fee $2.
COSC 1436. Programming Fundamentals I. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
This course introduces the fundamental concepts of structured programming, and provides a comprehensive introduction to programming for computer science and technology majors. Topics include software development methodology, data types, control structures, functions, arrays, and the mechanics of running, testing, and debugging. This course assumes computer literacy. Prerequisite: Concurrent or prior enrollment in one of the following MATH courses: 1314, 1316, 2412, 2413.
COSC 2345. Introduction to Artificial Intelligence. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour).
The course introduces the basic ideas and techniques underlying the design of intelligent computer systems. Topics include the history of Artificial Intelligence, types of agents and environments, knowledge representation, searching, constraints, heuristics, adversarial search, planning, Bayes’ Rule, Bayesian networks, Markov chains, supervised and unsupervised learning, artificial neural networks. Prerequisite: COSC 1310 and either MATH 1342 or MATH 3311.
COSC 2421. C++ Programming. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
Applies the object-oriented programming paradigm using the C++ programming language. The focus is on the definition and use of classes, interfaces, data encapsulation, inheritance, and polymorphism, templates and exceptions. Presents an introduction to object-oriented design. Prerequisite: COSC 1436.
COSC 2431. Java Programming. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
The main parts of the Java programming language are covered, including classes, methods, interfaces, inheritance, polymorphism, generics, lambda expressions, annotations, exceptions, threads and synchronization, collections, Java IO and NIO API. Prerequisite: COSC 1436 Lab fee: $2.
COSC 2441. Data Structures and Algorithms. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
Recursion, fundamental types of data structures (stacks, queues, linked lists, hash tables, trees, graphs, and matrices) and algorithms (brute-force, divide-and-conquer, dynamic programming, greedy), searching and sorting, space-time trade-offs, algorithmic analysis for recursive and non-recursive algorithms, as well as an introduction to the limits of computing and NP-completeness. Application of programming techniques to the implementation of the fundamental data structures and algorithms covered. Prerequisite: COSC 1436, or BCIS 3332, or BCIS 3343. Lab fee: $2.
COSC 2448. Introduction to Digital Systems Design. 4 Credit Hours (Lecture: 3 Hours, Lab: 3 Hours).
Combinational and sequential digital system design techniques; programmable logic devices; computer components (ALU, memory, IO circuits); hardware description language (VHDL); introduction to machine and assembly languages. Credit for both COSC 2448 and ELEN 2448 will not be awarded. Prerequisite: COSC 1436 (or concurrently), or ELEN 1212 (prerequisite), or MEEN 2212 (prerequisite) Lab fee: $2.
COSC 3330. Games, Graphics and GUIs. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour).
2D and 3D graphics; the main building-blocks of game design, from a programmer's perspective, such as character animation, scene navigation, shading, modeling, game rules, and GUI. Prerequisites: COSC 2421 and COSC 2441 Lab fee: $2.
COSC 3341. Applied Cryptography. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour).
Introduction to cryptography as it applies to computer security. It describes modern cryptographic systems and potential attacks against them. Topics include symmetric and asymmetric encryption algorithms, authentication, key exchange protocols, and blockchain technology. Applications to electronic commerce, including business, ethical and legal issues. Prerequisites: COSC 2441 and either MATH 3310 or MATH 3301 concurrently Lab fee: $2.
COSC 3344. Computer Applications in Analysis. 3 Credit Hours (Lecture: 2 Hours, Lab: 2 Hours).
Binary representations of integers and floating-point numbers; solutions to specific and general polynomial equations; regression and iteration techniques; approximate derivation and integration; error analysis; linear systems and matrix algorithms; other selected numerical algorithms, including non-linear ones. Use of MATLAB (or other similar computational tools) for performing computational analysis and generating graphical interpretations of the results is also included. Prerequisites: MATH 2414 and one of the following: COSC 1436 or BCIS 3332 or BCIS 3333. Lab fee: $2.
COSC 3360. Python Programming for Data Science. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour).
Programming tools are used to illustrate the components of the data pipeline: data collection, cleaning, exploration, modeling, visualization, and applications. The course includes an introduction to machine learning. A scripting language and some of its scientific libraries are introduced and covered in considerable detail. Both text analysis and numerical analysis are covered. The course includes an introduction to some basic machine learning algorithms. Prerequisite: COSC 1436 or BCIS 3332 or BCIS 3343 or STAT 2301. Lab fee: $2.
COSC 3364. Principles of Cybersecurity. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour).
This course introduces students to the fundamental concepts and best practices of cybersecurity. Security policies and mechanisms; threats, vulnerabilities, risks, and controls; authentication; access control; cryptography; software security; web security; operating system security; network security; database security; cloud computing security; cybersecurity ethical issues. Prerequisite: COSC 2421 or COSC 2431 or COSC 2441 or COSC 2448 or ELEN 2448. Lab fee: $2.
COSC 3389. Software Engineering I. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour). [WI]
A software engineering project, covering the software development process (incremental and agile vs waterfall), software requirements (functional and nonfunctional requirements, software quality), Unified Modeling Language, conceptual and behavioral modeling, software architecture, and design principles. Emphasizes teamwork, and explores ethical and legal principles applied to computing practice. Prerequisite: COSC 2431 or COSC 2441.
COSC 3390. Software Engineering II. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour).
The course is a follow-up to Software Engineering I. The main topics are: tools used in software development, coding practices, design patterns, code smells and refactoring, and testing (black box vs white box testing, unit tests, integration tests, acceptance tests). Prerequisite: COSC 3389 Lab fee: $2.
COSC 3443. Computer Architecture. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
Hardware and software structures found in modern digital computers. Digital circuits, instruction set architecture, hardwired design of the processor, assembly language programming, microprogramming, I/O and memory units, analysis of instruction usage, hardware complexity, and parallel computer architectures and programming. Credit for both COSC 3443 and ELEN 3443 will not be awarded. Prerequisite: COSC 1436 or COSC 2421 or COSC 2431. Lab fee: $2.
COSC 3466. Computer Vision. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
An introduction to the field of computer vision algorithms. It covers a broad range of topics, from simple to complex, such as: image formation, camera calibration, image processing, edge detection, filtering, feature extraction, image segmentation, optical flow, and multiple-view geometry algorithms. It also provides an introduction to deep learning and robotics applications. Prerequisite: COSC 1436 Lab fee: $2.
COSC 3480. Operating Systems. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
Introduction to the design and development of operating systems. Analysis of current system software technology, including process management, memory organization, security, and file systems. Prerequisite: COSC 2441 Lab fee: $2.
COSC 4086. Special Problems. 1-4 Credit Hours (Lecture: 1-4 Hours, Lab: 1-4 Hours).
Directed study of selected topics in Computer Science. May be repeated with approval of department head.
COSC 4088. Undergraduate Research Project. 1-3 Credit Hours (Lecture: 1-3 Hours, Lab: 0-0 Hours).
Methods of research in computer science through a research project directed by a departmental faculty member. The student is required to prepare a final report and presentation. No credit is earned until the final report and presentation are certified as completed by the faculty member directing the project. Prerequisites: Junior standing.
COSC 4301. Database Theory and Practice. 3 Credit Hours (Lecture: 2 Hours, Lab: 2 Hours).
Database models, with emphasis on relational databases. SQL, conceptual modeling, relational algebra, functional dependency theory, normalization and normal forms. File and data management principles underlying database construction. Optimization algorithms and indexing. Prerequisites: COSC 2441 or MATH 3310 or ENGR 3311 or ELEN 3320 Lab fee: $2.
COSC 4341. Microprocessor System Design. 3 Credit Hours (Lecture: 2 Hours, Lab: 3 Hours).
Introduction to microprocessors; 8/16 bit single board computer hardware and software designs; chip select equations for memory board design, serial and parallel I/O interfacing; ROM, static and dynamic RAM circuits for no wait-state design; assembly language programming, stack models, subroutines and I/O processing. Credit for both COSC 4341 and ELEN 4341 will not be awarded. Prerequisite: COSC 1436 and (ELEN 2448 or COSC 2448). Lab fee: $2.
COSC 4345. Reinforcement Learning. 3 Credit Hours (Lecture: 3 Hours, Lab: 0 Hours).
This course will provide an introduction to, and comprehensive overview of, reinforcement learning (RL). Topics include Markov decision process and dynamic programming, Monte-Carlo methods, temporal difference learning, integration of planning and learning, policy gradient and actor-critic methods, deep learning and deep RL algorithms. Students will engage in exercises and projects that involve coding in simulated RL environments. Credit will not be awarded for both COSC 4345 and 5345. Graduate students will have to complete additional assignments. Prerequisite: MATH 3311, MATH 3318, and one of (COSC 2345, COSC 3360, COSC 3366).
COSC 4346. Robotics and Autonomous Systems. 3 Credit Hours (Lecture: 3 Hours, Lab: 0 Hours).
Overview of the major areas of robotics and autonomous systems. AI, machine learning and optimization algorithms that enable autonomous agents to operate in unstructured, dynamic environments, including localization and mapping, sensor fusion, computer vision, path planning, communication, and obstacle avoidance. Students will engage in exercises and projects that involve developing robotics systems with autonomous actions, and evaluating their performance using computer simulations and physical robotic systems. Credit will not be awarded for both COSC 4346 and 5346. Graduate students will have to complete additional assignments. Prerequisite: MATH 2413 and one of (COSC 2345, COSC 3360, COSC 3466).
COSC 4351. Distributed Applications. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour).
A study of the architecture and design of distributed applications. N-tier application and supporting technologies are investigated including client/server architecture, supporting languages, transaction processing, and distribution of processes. Prerequisites: COSC 2431 and COSC 2441. Lab fee: $2.
COSC 4361. Deep Neural Networks. 3 Credit Hours (Lecture: 3 Hours, Lab: 0 Hours).
Introduction to the principles and theory of neural networks, with emphasis on deep neural networks. Topics include convolutional networks, recurrent and LSTM networks, regularization, tuning and optimization, as well as mathematical and programming tools. Applications to regression, classification, image recognition. Credit will not be awarded for both COSC 4361 and 5361. Graduate students will have to complete additional assignments. Prerequisite: MATH 2413 and one of (MATH 1342, MATH 3311, ENGR 3311) and one of (COSC 2345, COSC 3360, COSC 3466).
COSC 4365. Software Security. 3 Credit Hours (Lecture: 3 Hours, Lab: 0 Hours).
Introduces the basic software security principles and pitfalls, including defensive programming, buffer, integer and string problems, runtime errors, data protection, secure file access. Covers mechanisms and tools used to make software systems more secure, including architectural approaches to building secure software. Prerequisite: COSC 2421 Lab fee: $2.
COSC 4378. Computer Networks. 3 Credit Hours (Lecture: 3 Hours, Lab: 1 Hour). [WI]
Presentation of computer network layered architecture, going through the five main layers: physical, data link, network, transport, and application. Emphasis is placed on medium access control sub-layer for local area networks, routing algorithms and protocols, connectionless and connection-oriented transport services, application layer services and protocols, security, and modern wireless access technologies. Prerequisites: COSC 2441 or MATH 3310 or ENGR 3311 or ELEN 3320 Lab fee: $2.
COSC 4380. Cybersecurity Capstone. 3 Credit Hours (Lecture: 3 Hours, Lab: 0 Hours). [WI]
Students apply cybersecurity principles and techniques to develop a complex information system starting from customer requirements and progressing through the entire analysis, design, implementation, testing, and delivery lifecycle. Students work in teams to develop a project plan, complete the technical components of the project, test, and prepare deliverable documents. Prerequisites: Cybersecurity major and senior standing.
COSC 4381. AI and Machine Learning Capstone. 3 Credit Hours (Lecture: 3 Hours, Lab: 0 Hours). [WI]
Students apply AI and Machine Learning (ML) principles and algorithms to develop a complex system starting from customer requirements and progressing through the entire analysis, design, implementation, testing, and delivery lifecycle. Students work in teams to develop a project plan, complete the technical components of the project, test, prepare deliverable documents, and present the project. Prerequisite: AIML major and senior standing.
COSC 4389. Programming Languages Fundamentals. 3 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
The course is about the principles of programming languages, concepts of language processing, program representation, and language translation and execution. The main topics are formal description of programming languages, syntax analysis, semantic analysis, code generation, and runtime systems. Prerequisite: COSC 2431, COSC 2441 Lab fee: $2.
COSC 4460. Machine Learning. 4 Credit Hours (Lecture: 3 Hours, Lab: 2 Hours).
This course is a broad introduction to machine learning algorithms, with emphasis on their application in data science and cybersecurity. Topics include dimensionality reduction, regression, clustering, support vector machines, decision trees, naïve Bayes, and neural networks. The course includes a significant project component, with real-world data. Prerequisite: COSC 2441 and COSC 3360, and either (MATH 1342, or MATH 3311, or ENGR 3311). Lab fee: $2.
