Computer Science Courses (CS)
See Course & Instructor Information for current offerings and syllabus listings.
1191 Freshman Research I. Freshman research for students selected for a freshman research grant. This course satisfies the first semester of that research requirement.
Prerequisite: Approval from department chair is required prior to enrollment.
1314 Introduction to Programming and Problem Solving (3-0). Basic competency in computer programming, ability to solve problems by writing computer programs, knowledge of the Python language and an introductory knowledge of object-oriented programming.
1315/COSC 1315 Fundamentals of Programming (3-0). Introductory computer programming techniques using a modern, object-oriented programming language.
1336/COSC 1336 Computer Science I (3-0). The concepts and properties of algorithms for solving numerical and non-numerical problems. Introduction to computer and programming systems, including the development, debugging, and verification of programs, representation of data, computer characteristics and organization.
1337/COSC 1337 Computer Science II (3-0). Continuation of Computer Science 1336. Problem solving and program development techniques emphasizing modular design. Includes advanced programming topics such as class design, records, strings, pointers, and bit manipulation.
Prerequisite: Computer Science 1336.
1351 Java Programming (3-0). Programming concepts and development in the Java language.
1371 Introduction to Computer Game Development (3-0). An introduction to computer game development. Topics include the history of game development, player motivation, game elements, storytelling, characters, game play, level design, interface design, audio, project management, production, marketing and maintenance.
1391 Freshman Research II. Freshman research for students selected for a freshman research grant. This course satisfies the second semester of that research requirement.
Prerequisite: Approval from department chair is required prior to enrollment.
2324 3D Modeling and Animation I (3-0). Introduction to three-dimensional (3D) modeling and animation utilizing industry standard software. The course includes the modeling and modification of 3D geometric shapes, as well as introduction to camera techniques, light sources, textures, rigging, weight-mapping models and rendering for animation.
2336/COSC 2336 Data Structures and Algorithms (3-0). Study of basic data structures and their applications such as: linear structures (arrays, lists, stacks, queues) and non-linear structures (trees, graphs); sequential and linked storage representation methods; sorting and searching algorithms; and techniques of algorithmic analysis.
Prerequisite: Computer Science 1337.
3304 Computer Organization and Programming (3-0). Basic computer organization with emphasis on machine representation of data and instructions; programming in assembly and machine-oriented languages for real and simulated computers.
Prerequisite: Computer Science 1337.
3310 Principles of Linux (3-0). This course will introduce the students to UNIX and systems programming. Students will use a Linux environment to learn user and administrative commands, create scripts using shell scripting languages, and program using C language, implementing UNIX concepts such as processes, inter-process communication and sockets.
Prerequisite: Computer Science 1337.
3311 Data Base Management (3-0). Basic data base concepts, organization, and definitions; data description languages; relational data base concepts and examples; comparison of data base systems.
Prerequisite: Computer Science 1337.
3312 Web Programming (3-0). Techniques for creating dynamic and responsive web pages using the latest markup, styling and client-side scripting technologies. Best practices for code maintainability and for browser and mobile compatibility will be emphasized.
Prerequisite: Computer Science 1314 or 1336 or 1351 or instructor’s permission.
3325 3D Modeling and Animation II (3-0). Intermediate methods for three-dimensional (3D) modeling and animation, including spline drawing, dynamic object emitters, surface mapping, skelegons, inverse kinematics, and extended lighting, texturing, and camera techniques.
Prerequisite: Computer Science 2324.
3331 Programming Languages (3-0). An introduction to the syntax and semantics of programming languages. Actual programming languages may be used to illustrate the language concepts.
Prerequisite: Computer Science 2336.
3344 Computer Architecture (3-0). Study of the hardware components of a computer system and survey of various computer architectures. Topics may include instruction set design, computer arithmetic, and microprogramming.
Prerequisite: Computer Science 3304.
3352 Theory of Algorithms (3-0). An in-depth study of computer algorithms, including those for hash tables, trees and graphs; analysis of time and space requirements of algorithms; NP-completeness and undecidability of problems.
Prerequisite: Computer Science 2336.
Prerequisite or Corequisite: Mathematics 2305
3371 Computer Game Development I (3-0). Introduction to the design and implementation of computer games, including realtime graphics, audio and interactive multimedia programming techniques.
Prerequisite: Computer Science 2336.
3372 Handheld Game Development (3-0). Computer game development for one or more handheld computing devices. Programming topics include graphics, audio, user interfaces and development tools. Other topics may include content creation, developer workflow, hardware acceleration, and power management.
Prerequisite: Computer Science 2336.
4071 Internship: 1 to 3. Supervised internship with an approved cooperating business or government entity. The internship requires a minimum of ten hours per week. May be repeated for a total of three credits.
Prerequisites: Junior or Senior Computer Science major. Approval from the department chair is required prior to enrollment.
4091 Research: 1 to 6. Supervised research with a faculty member for students majoring in computer science. May be repeated for a total of six credits.
Prerequisites: Junior or Senior Computer Science major. Approval from the department chair is required prior to enrollment.
4301 Algorithmic Languages and Compilers (3-0). Formal description of algorithmic languages, compilation techniques, syntactic analysis, code generation, storage allocation, syntax-directed compilers, compiler-building systems.
Prerequisites: Computer Science 2336, 3304.
4302 Operating Systems (3-0). A study of the design and implementation of operating systems; analysis of system resource management, including the memory, processor, device, and information management functions.
Prerequisites: Computer Science 2336.
4303 Operating System Security (3-0). Modern operating systems security concepts. Access control fundamentals, security in ordinary operating systems, security kernels, securing commercial operating systems, case studies, secure capability systems, secure virtual machine systems, and system assurance.
Prerequisite: Computer Science 4320.
4306 Software Engineering (3-0). Introduction to the fundamental concepts of computer software development; programming methodology; software reliability; performance and design evaluations, software project management; program development languages, tools and standards.
Prerequisite: Computer Science 2336.
4307 Ethical Issues in Computing (3-0). Seminar style with discussion of the concern for the way in which computers pose new ethical questions or pose new versions of standard moral problems and dilemmas; study of ethical concepts to guide the computer professional; and computer professional codes of ethics. Case studies will be used to relate to ethical theory. Discussion will include ethical and legal use of software and conflicts of interest.
Prerequisite: Junior standing.
4308 Computer Graphics (3-0). Study of hardware and software found in graphics systems. Topics such as line and curve drawing, text generation, transformation methods for two and three dimensional systems, fill algorithms, fractal curves and hiddenline algorithms.
Prerequisites: Computer Science 2336 and Mathematics 2312.
4310 Database Security (3-0). An overview of database security concepts and techniques and will discuss new directions of database security. The topics will cover database application security models, database and data auditing, XML access control, trust management, and privacy protection.
Prerequisite: Computer Science 4320.
4312 Internet Technologies (3-0). Technologies that make up the Internet including servers, clients, protocols, browsers and mechanisms for executable content.
Prerequisite: Computer Science 2336.
4314 Computer Networking (3-0). Introduction to the principles and basic concepts of computer networking, including the Internet. Networking concepts, protocols and technologies are broken down into layers.
4318 Artificial Intelligence (3-0). Fundamental concepts and techniques of intelligent systems; representation and interpretation of knowledge on a computer; search strategies and control.
Prerequisite: Computer Science 2336.
4319 Machine Learning (3-0). Introduction to machine learning and statistical pattern recognition. Supervised and unsupervised learning and reinforcement learning of algorithms. Application of machine learning algorithms using open-source software libraries.
Prerequisite: Computer Science 2336.
4320 Introduction to Computer and Network Security (3-0). In-depth look at the security risks and threats to an organization’s electronic assets, and an overview of components used in an enterprise security infrastructure. Topics will include theoretical background as well as practical techniques to secure an enterprise network.
4330 Introduction to Data Science (3-0). Utilize tools and writing programs for acquiring, cleaning, analyzing, exploring, and visualizing data; making data-driven inferences and decisions; and effectively communicating results. Learning data manipulation, data analysis with statistics and machine learning, data communication with information visualization, working with big data using scalable techniques.
Prerequisite: Computer Science 2336.
4340 Offensive Security Techniques (3-0). This course will introduce cybersecurity practices of penetration testing and malware analysis. In virtual machine environments, the students will freely but safely exploit system vulnerabilities by deploying offensive security techniques, such as reconnaissance and backdoor, and determine how to avoid such problems.
Prerequisites: Computer Science 1314, 3310, 4314, 4320.
4350 Advanced Offensive Security Techniques (3-0). This is the second course in the offensive security series. Some of the topics that will be discussed: malware development strategies such as shellcode payloads and buffer overflow exploitations, reverse engineering approaches for locating software flaws and malware analysis, and scripting techniques for attacking web applications.
Prerequisites: Computer Science 3304, 4340.
4360 Host and Device Security (3-0). This course will discuss methods used to ensure confidentiality, integrity and availability of information using host and device-based security techniques. Topics covered are operating systems security configuration, access control and malware defense on individual hosts, security techniques on networking devices such as switches and routers, firewall designs and implementations, intrusion detection and prevention systems, and public facing security techniques, such as demilitarized zones.
Prerequisites: Computer Science 3310, 4314, 4320.
4370 Software Security (3-0). This course is a study of the foundation of software security. Students will learn the characteristics of secure software, the role of security in the development life cycle, designing secure software, best security programming practices, security for web applications, static analysis techniques, and software security testing.
Prerequisite: Computer Science 2336, 4320.
4371 Computer Game Development II (3-0). Continuation of Computer Science 3371. Advanced game programming techniques, including designing game mechanics, concepts of emergence and progression, and the use of visual design tools.
Prerequisite: Computer Science 3371.
4375 Cybersecurity Risk Management (3-0). An overview of cyber risk management concepts and techniques. Risk identification, assessment, and management. An overview of frameworks, relevant regulations, and available tools. Risk-based assessment, including reporting audit issues, and designing internal controls. Risk management with governance models and risk management techniques.
Prerequisite: Computer Science 4320.
4380 Ethical Issues in Software Security (3-0). An introduction of ethics in software development and security, enabling students to reason about the consequences of security-related choices and effects in software development, testing and vulnerability disclosure. Topics will include code reuse (licensing), professional responsibility, codes of ethics, liability aspects of software, regulations, compliance and ethical implications of testing.
4381 Special Topics in Computer Science (3-0). Contemporary applications and theory in computer science. (May be repeated once for credit when the topics vary.)
4389 Digital Forensics (3-0). Introduction to the topics of computer forensics, computer crimes, response to security incidents, cybercrime investigation and prosecution. Students will learn about legal issues, investigatory process, digital forensic tools, acquisition, preservation, analysis and authentication of evidence. Optional topic will include mobile forensics.
Prerequisite: Computer Science 2336, 4320.
4390 Cryptography (3-0). An introduction to important cryptographic concepts and techniques. Topics will include classical cryptography (codes, substitution ciphers, transposition ciphers), block and stream ciphers, secret-key ciphers (Feistel, DES, AES), public-key cryptography (RSA, key agreement, signature schemes), hash functions (such as MD6 and SHA-2). Optional topics will include cryptanalysis, steganography and quantum cryptography.
Prerequisites: Computer Science 2336 and Mathematics 2305.
4392 Cloud Security (3-0). Industry is increasingly adopting to run its IT and applications in the cloud. But off-premises on-demand infrastructures give rise to new security concerns. This course first addresses detecting risks and vulnerabilities of current cloud platforms using penetration-testing techniques. This course then focuses on securing the cloud by deploying security mechanisms such as isolation, data protection, identity and access management. This course will also cover governance, audit, legal issues and meeting regulatory compliance in a cloud environment.
Prerequisite: Computer Science 4314, 4320.
4399 Senior Design Project (3-0). Capstone project experience in designing, implementing, and testing an assigned software application in team setting using software engineering principles. Students report progress via documentation, meetings and demos. Class concludes with a presentation and demonstration of the completed product to students, faculty and project sponsors.
Prerequisite: Computer Science 4306.
Game Development Sequence
Students electing an emphasis in game development take the following courses:
- 1371 Introduction to Computer Game Development
- 3371 Computer Game Development I
- 3372 Handheld Game Development
- 4318 Artificial Intelligence
- 4371 Computer Game Development II
Earlier Course Descriptions
For a list of course descriptions prior to fall 2008, contact the computer science program.