- About Us
- Prospective Students
- Undergraduate Students

- Application for Undergrad Major
- Course Offerings Plan
- Current Course Listing
- Job Opportunities
- Major Checklists
- CSC 4 +1 Combined Degree
- Minors
- Student Organizations
- Program Educational Objectives
- Student Outcomes
- Specific Course Outcomes
- Scholarships
- Undergraduate Catalogue
- B.S. Information Technology
- B.A. Digital Arts

- Graduate Students
- Research
- College of Arts and Sciences

# Course Learning Outcomes

- CSC 105: Computing Competencies for College and the Workplace
**LAST DATE OF AMENDMENT: 08/20/2014**At the end of this course, the student should be able to:

- Explain how information is stored, accessed, and represented in computers. [IL1].
- Be fluent in the language of technology and be able to discuss the state of past, current and emerging technologies. [IL1].
- Assess the appropriateness of various technological tools to apply to a given problem. [IL1].
- Discuss computer applications in the context of how and when they are best applied. [IL1].
- Understand a variety of Web-based sources for accessing information including various methods of Internet searching, communications, commercial transactions and utilities. [IL2], [IL3].
- Discuss basic Internet security and privacy issues. [IL2], [IL5].
- Understand how databases are created and used. [IL2], [IL4].
- Understand and demonstrate appropriate uses of technology including basic proficiency, decision-making, and information evaluation. [IL3], [IL4], [IL5].
- Demonstrate appropriate research strategies as applied to a specific task. [IL3].
- Demonstrate proficiency using computer applications to organize and disseminate information related to a given task. [IL4].
- Develop an awareness of some of the social and ethical issues raised by computers and technology. [IL4], [IL5].

- CSC 112: Introduction to Computer Programming (for non-majors)
**LAST DATE OF AMENDMENT: 03/31/2017 (addition of SLO 6 and 7)**At the end of this course, the student should be able to:

- Students study and then apply the basic elements of computer programming, including variables, data representation, mathematical and logical expressions, predicates, conditionals, loops, and functions, and object-oriented modeling (QRE 1, Modeling TTC 2).
- Students study, interpret, create, and solve various problems, from real-world domains (e.g., finance, biology, physics, chemistry, health care), while writing computer programs that express and solve these problems (QRE 1, Modeling TTC 1).
- Students study and practice the construction of algorithms to solve problems and implement these algorithms in a particular programming language (QRE 2, Modeling TTC 3).
- Students study and complete the process of the software life-cycle while learning to evaluate, test, and revise computer programs (QRE 2).
- Students gain programming experience and knowledge by subdividing problems, devising solutions, and independently implementing their own solutions to these problems in software using a particular programming language (QRE 3, Modeling TTC 3).

- CSC 131: Introduction to Computer Science
**LAST DATE OF AMENDMENT: 09/16/2013 (adopted the Course Learning Outcomes)**At the end of this course, the student should be able to:

- Students demonstrate an understanding of basic programming concepts including data types, variables, modularity, parameters, conditional statements, iteration, and arrays.
- Students demonstrate program development techniques to describe and understand the problem statement, think through input/process/output, leading to problem representation and finally coding.
- Students demonstrate the ability to use program control structures (i.e., iteration, conditionals).
- Students develop and use algorithms to solve a variety of problems, for instance those related to array processing, statistical calculations, image and audio processing, and text processing.
- Students practice modular programming by developing, debugging and integrating modules into a larger program.
- Students demonstrate the ability to use programming language specific software libraries.
- Students demonstrate the ability to use basic file input and output.
- Students demonstrate the ability to use software development tools from command line compile and run commands to an integrated development environment.

- CSC 133: Discrete Mathematical Structures
**LAST DATE OF AMENDMENT: 09/11/2009 (adopted the Course Learning Outcomes)**At the end of this course, the student should be able to:

- Students develop knowledge of and the capability to use logical forms, valid arguments, direct and indirect proofs, and mathematical induction.
- Students develop knowledge of set theory, Boolean algebra, relations, and functions.
- Students develop knowledge in the representation of problems in the form of graphs and trees.
- Students develop the ability to perform counting and probability calculations on sets.
- Students develop the ability to express these concepts and ideas through correct application of standard notation and symbols.

- CSC 220: 3D Computer Graphics Tools and Literacy
**LAST DATE OF AMENDMENT: 09/20/2014**At the end of this course, the student should be able to:

- Demonstrate the ability to critically analyze, appreciate, and make cogent judgments regarding form, lighting, shading, composition, and other visual elements.
- Demonstrate an understanding of visual concepts, their development, and their application for creating works with computer graphics tools.
- Demonstrate an understanding and appreciation of the significance of major historical, cultural, and technological developments for the medium of computer graphics, as well as its importance to modern visual art and communication.
- Demonstrate knowledge of the importance of the medium of computer graphics as a tool for expression, communication, and visualization of meaningful ideas.
- Students gain experience in presenting, discussing, and critiquing visual works.
- Students gain the artistic and technical knowledge necessary to create their own computer graphics works.

- CSC 231: Introduction to Data Structures
**LAST DATE OF AMENDMENT: 08/16/2014 (adopted the Course Learning Outcomes)**At the end of this course, the student should be able to:

- Students develop knowledge of basic data structures for storage and retrieval of ordered or unordered data. Data structures include: arrays, linked lists, binary trees, heaps, and hash tables.
- Students develop knowledge of applications of data structures including the ability to implement algorithms for the creation, insertion, deletion, searching, and sorting of each data structure.
- Students learn to analyze and compare algorithms for efficiency using Big-O notation.
- Students implement projects requiring the implementation of the above data structures.

- CSC 242: Computer Organization
**LAST DATE OF AMENDMENT: 09/18/2009 (adopted the Course Learning Outcomes)**At the end of this course, the student should be able to:

- Students develop knowledge and understanding between hardware/middleware and frameworks for high level programming languages.
- Students develop knowledge of combinational and sequential logic circuits.
- Students learn how modern computers are constructed from basic logic gates and sequential elements.
- Students learn the major components of a modern processor, ALU, Control Unit and Memory.
- Students learn how to create and use processor specific assembly language.

- CSC 302: Introduction to Artificial Intelligence
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Demonstrate fundamental understanding of the history of artificial intelligence (AI), its foundation, and its challenges.
- Apply basic principles of AI in solutions that require problem solving, inference, perception, knowledge representation, and learning.
- Demonstrate awareness and a fundamental understanding of various applications of AI techniques in intelligent agents, search algorithms, constraint satisfaction problems.
- Develop knowledge of representational issues and their relationship to applications of artificial intelligence.
- Demonstrate an ability to share in discussions of AI, its current scope and limitations, and societal implications.

- CSC 315: Application Development for Mobile Devices
**LAST DATE OF AMENDMENT: 09/22/2014**At the end of this course, the student should be able to:

- Students learn aspects of a mobile platform language and development environment.
- Students refine understanding and application of object-oriented design principles on a larger scale than previously used.
- Students learn to navigate and apply classes and methods from a large software framework for Mobile-centric activities such as multimedia, networking, and location-based services.
- Students gain understanding of limitations and capabilities of current mobile devices.
- Students gain experience in designing mobile-device interfaces.
- Students gain experience in mobile application design, programming, and implementation.

- CSC 320: Computer Animation
**LAST DATE OF AMENDMENT: 09/18/2009 (adopted the Course Learning Outcomes)**At the end of this course, the student should be able to:

- Students gain understanding in mathematical, algorithmic, and conceptual techniques related to animating computer graphics models and environments.
- Students develop the ability to model and rig objects and characters in 3-D using constraints, expressions, and scripting in computer animation software.
- Students learn aspects of the topology of polygon, NURBs, and subdivision-surface modeling that relate to deformations used in animation.
- Students understand and apply concepts of narrative structure and animation technique.
- Students model, rig, shade, and animated characters completely of their own creation, presenting their work for class critique.
- Students work together as a large, coordinated group to complete a fully realized animated short film project from concept through to post-production and screening.
- Students learn aspects of digital production and workflow as applied in current industry.

- CSC 322: Data & Machine Learning
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Formulate real-world problems involving data such that they can be solved by data science techniques presented in this course.
- Implement and analyze existing learning algorithms.
- Employ probability, statistics, calculus, linear algebra, and optimization to construct predictive/analytical models from data.
- Select and apply appropriate machine learning techniques for real-world problems including classification, prediction, clustering, and representation learning.
- Describe the formal properties of models and algorithms for learning and explain the practical implications of those results.
- Compare and contrast different paradigms for learning and algorithm.
- Identify ethical issues in related projects and apply professional codes of ethics to analyze and resolve ethical questions.

- CSC 331: Object-Oriented Programming and Design
**LAST DATE OF AMENDMENT: 08/16/2014 (adopted the Course Learning Outcomes)**At the end of this course, the student should be able to:

- Students develop their understanding of basic object-oriented concepts like classes, methods, and objects and refine their knowledge one and two-dimensional arrays, and basic program control.
- Students develop an understanding of more advanced object-oriented concepts (e.g., interfaces, polymorphism, inheritance, user interfaces, event handling, file I/O, exceptions, encapsulation, cohesion, coupling).
- Students develop the ability to recognize and apply object-oriented approaches to analysis and design of algorithms.
- Students learn to work in small teams (2-3 students) to develop a sizable project.
- Students learn to present their work in front of their peers.
- Students develop skills in documenting their code using a tool such as javadoc.
- Students learn to use software development tools like Eclipse and software development processes like refactoring.

- CSC 340: Scientific Computing
**LAST DATE OF AMENDMENT: 03/31/2017**At the end of this course, the student should be able to:

- Students develop knowledge of computer data representation and its relationship to computational error and error propagation.
- Students develop a knowledge of vector and matrix operations (e.g., addition, subtraction, transpose, multiplication, inverse).
- Students learn how to find and use eigenvectors and eigenvalues and students implement programs to find these.
- Students implement and learn to use programs to find roots for functions.
- Students implement and learn to use programs to fit data using both linear and nonlinear functions.
- Students develop a knowledge of algorithm and implementation alternatives that enables them to choose appropriately.
- Students develop skills in writing technical reports that describe findings that arise from application of software that they develop.
- Students demonstrate knowledge from two or more STEM disciplines.
- Students apply STEM problem solving methodologies, such as the scientific method, the engineering design process, or modeling, to real-world problems.

- CSC 342: Operating Systems
**LAST DATE OF AMENDMENT: 08/27/2009**At the end of this course, the student should be able to:

- Students develop the ability to implement algorithms using the C language.
- Students develop knowledge of various concepts and issues pertaining to operating system internals.
- Students gain knowledge of solutions and algorithms developed by the computer science community to address issue of operating systems.
- Students develop knowledge of computer data representation used by these algorithms.
- Students work in teams to implement some of the algorithms used by operating systems.
- Students gain knowledge of the methods used by real operating systems such as Windows, Linux, Unix, and Mac operating systems.

- CSC 344: Computer Networks
**LAST DATE OF AMENDMENT: 02/17/2010**At the end of this course, the student should be able to:

- Students gain knowledge of the fundamental concepts and principles of computer networks.
- Students learn the operational details of numerous networking protocols including: TCP, UDP, IP, Ethernet, ARP, DNS, DHCP, ICMP, SMTP, and HTTP.
- Students gain hands-on experience with protocols and networking concepts by implementing algorithms and protocols in a computer network laboratory.
- Students gain knowledge of the issues of network security.
- Students implement application programs that require the use of socket programming.

- CSC 351: Applied Software Security
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Produce software components that satisfy their functional requirements without introducing vulnerabilities.
- Describe the characteristics of secure programming.
- Understand the vulnerabilities inherent in different programming languages.
- Examine vulnerabilities introduced through the use of libraries and how to mitigate those vulnerabilities.
- Examine concepts of web application technologies and security issues associated with them.
- Describe approaches used in the development and deployment of secure web applications.
- Explain how web applications are operated in a secure manner.

- CSC 358: Cyber Operations
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Describe the laws that provide US entities the authority to perform cyber operations.
- List the phases of a well-organized cyber operation and describe the goals and objectives of each phase.
- Identify and explain specific phases of cyber operations.

- CSC 360: Formal Languages and Computability
**LAST DATE OF AMENDMENT: 09/04/2009**At the end of this course, the student should be able to:

- Students develop knowledge of the mathematical foundations of computer science including set theory, relations, functions, recursion, and mathematical induction.
- Students develop knowledge of languages and the ability to express regular languages using regular sets, regular expressions, and context-free grammars.
- Students learn how to perform transformations of context-free grammars to normal forms.
- Students develop knowledge of and an ability to create finite state automata that can accept regular languages. Further students, can remove non-determinism and produce minimal deterministic finite automata.
- Students develop knowledge of and an ability to create pushdown automata that can accept context-free languages.
- Students can determine whether a given language is regular, context-free, or neither by application of closure properties and the Pumping Lemmas.
- Students can effectively communicate the concepts of this course by employing acceptable standard nomenclature and symbols of mathematics, proofs, sets, relations, functions, and graph theory.

- CSC 365: Client-Side Web Development
**LAST DATE OF AMENDMENT: 10/01/2012**At the end of this course, the student should be able to:

- Design and Implement a simple web application. [Usage]
- Describe the constraints that the web puts on developers. [Familiarity]
- Compare and contrast web programming with general purpose programming. [Assessment]
- Discuss how web standards impact software development. [Familiarity]
- Review an existing web application against a current web standard. [Assessment]

- CSC 368: Visual Design for Multi-Media
**LAST DATE OF AMENDMENT: 10/01/2016**At the end of this course, the student should be able to:

- Students integrate key facets of both computer science and studio art courses and understand how these fields complement each other. [IL3]
- Students learn modern concepts for visual interface design.
- Students gain understanding of user experience and learn how to create designs that better this experience. [IL2]
- Students gain experience designing and coding the Internet and displaying visual information in a web browser.
- Students will research topics and develop original visual concepts to explain and share information. [IL1][IL3]
- Students analyze context of sources used to create web-based information art to evaluate its currency, authority, accuracy, relevance, and purpose. [IL2]
- Students learn how and where to cite sources for visual designs on a website. [IL2]
- Students complete visual software projects by synthesizing and combining ideas from material covered. [IL2] [IL3]
- Students iteratively develop, present, and receive feedback on a portfolio website of their work for future opportunities. [IL3]
- Students learn a variety of data visualization methods / technologies
- Students learn a variety of digital storytelling methods / technologies
- IL 1. Develop questions for research that necessitate information seeking, gathering, and analysis and employ effective and iterative search strategies to address them. [Information Literacy, Inquiry]
- IL 2. Critically evaluate and classify sources based on the context in which they were produced and disseminated, their place in the relevant scholarly conversation(s), and their indicators of authority. [Critical Thinking, Information Literacy]
- IL 3. Synthesize and effectively use information to create new content (e.g., papers, presentations, data analyses, videos) that addresses the research questions, demonstrates ethical use of information (including the acknowledgement of other's intellectual work), and adheres to any established disciplinary or professional parameters. [Information Literacy, Thoughtful Expression]

- CSC 370: Computer Graphics
**LAST DATE OF AMENDMENT: 07/01/2010**At the end of this course, the student should be able to:

- Students gain understanding of the representation and generation of images using computers.
- Students learn and practice mathematics required for representation of graphic primitives in 2D and 3D with transformations.
- Students learn and implement algorithms for graphical representations and transformations.
- Students gain understanding of and experience using a modern graphics pipeline.
- Students gain experience programming 2D and 3D graphical solutions using graphical APIs such as OpenGL.
- Students learn mathematics and algorithms for lighting and shading of graphical objects.
- Students complete software projects related to graphics by synthesizing and combining ideas from material covered.

- CSC 380: Design and Analysis of Algorithms
**LAST DATE OF AMENDMENT: xx/xx/xxxx (adopted the Course Learning Outcomes)**At the end of this course, the student should be able to:

- Learn, and demonstrate their knowledge of, algorithm design paradigms and the language of algorithm analysis.
- Choose data representations and identify, design, and implement multiple algorithms, based upon design paradigms (such as, divide-and-conquer, greedy algorithms, graph algorithms, randomized algorithms or dynamic programming).
- Analyze the algorithmic complexity of algorithms and employ mathematical, analytical, and asymptotic notation to describe their relative merits.
- Develop an understanding of NP-completeness.

- CSC 385: Professional and Ethical Issues in Computer Science
**LAST DATE OF AMENDMENT: 06/02/2017**At the end of this course, the student should be able to:

- Identify ethical issues as they impact computer science and related disciplines. [IL1] [IL3] [WI2]
- Differentiate between the main ethical theories and be able to use the ethical theories in evaluating the ethical issues impacting computer science and related disciplines. [IL2] [WI1] [WI2]
- Discuss ethical issues in writing, using appropriate reference to the established Code of Ethics of the professional society relevant to that student’s field (ACM, IEEE, etc), and apply professional codes of ethics to analyze and resolve ethical questions. [IL4] [WI1] [WI2]
- Demonstrate the ability to write within the computer science discipline including writing one or more research papers that demonstrate the student’s grasp of ethical issues, display a clear understanding of how the ideas of other persons may be properly cited and used in written documents, and illustrate use of popular formats for presenting published papers in computer science. [WI1] [WI2]
- Prepare and present information on a technical topic in a professional manner. [IL4]
- Identify and locate appropriate sources of information to support decisions and written ideas. [IL1] [IL3] [IL4] [WI1]
- Analyze and evaluate arguments using rules of logic and be able to formulate effective arguments based on sound premises. [IL3] [WI2]

- CSC 402: Advanced Artificial Intelligence
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Demonstrate awareness and a fundamental understanding of various applications of AI techniques in game trees, decision systems, artificial neural networks, Bayesian networks.
- Demonstrate proficiency developing AI applications in an AI programming language.
- Develop ability to apply knowledge representation, reasoning, and machine learning techniques to real-world problems.
- Develop knowledge of intelligent multi-agent systems.
- Understand the fundamentals of reinforcement learning.

- CSC 421: Game Development
**LAST DATE OF AMENDMENT: 10/01/2021**At the end of this course, the student should be able to:

- Students gain understanding in mathematical, algorithmic, and conceptual techniques related to generating, displaying, and animating meshes for 3D computer games.
- Students develop the ability to model and rig objects and characters in 3-D geared for realtime rendering and use in advanced game engines.
- Students learn aspects of object representation, scene-graph hierarchy, and algorithms related to real-time rendering of graphical objects.
- Students learn and apply mathematical concepts, including linear algebra, parametric equations, and quaternions, needed for 3D computer gaming.
- Students learn, discuss, and consider the history, development, and design of computer games as well as basic artificial intelligence and physics for games.
- Students design and code their own 2D game, creating all resources (sprites, images, sounds), modifying and expanding a C++ game engine for main control of rendering.
- Students design and code their own 3D game in small groups, creating all resources (3D models, 3D terrain, textures, character rigging and animation) necessary for it, modifying and expanding a C++ game engine for game control and rendering.

- CSC 424: Computer Security
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Students will be able to identify the elements of a cryptographic system.
- Students will be able to describe the differences between symmetric and asymmetric algorithms.
- Students will be able to describe which cryptographic protocols, tools and techniques are appropriate for a given situation.
- Students will be able to describe how crypto can be used, strengths and weaknesses, modes, and issues that have to be addressed in an implementation (e.g., key management), etc.
- Describe the key concepts in network defense (defense in depth, minimizing exposure, etc.).
- Explain how network defense tools (firewalls, IDS, etc.) are used to defend against attacks and mitigate vulnerabilities.
- Analyze how security policies are implemented on systems to protect a network.
- Evaluate how network operational procedures relate to network security.
- Compare and contrast different types of standards including: laws, regulations, policies, voluntary, and framework-based standards.
- Map the processes for the creation and/or changes to different types of standards.
- Describe the impact of legal/regulatory standards on a given system.
- Describe how standards may be applied and assessed for a sub-contractor or customer.
- List and describe key provisions of common standards.

- CSC 430: Digital Visual Effects
**LAST DATE OF AMENDMENT: 02/12/2010**At the end of this course, the student should be able to:

- Students gain understanding in mathematical, algorithmic, and conceptual techniques related to representing images and sequences of images with digital technologies.
- Students develop the ability to manipulate aspects of digital images to create and composite photo-realistic, synthetic images, either through software or code.
- Students learn aspects of digital cinematography and how physical cameras, lenses, and movement relate to digital representations and how to match these virtually.
- Students learn techniques and aspects of algorithms for rendering photo-realistic imagery using computer graphics software.
- Students model, render, and composite images and videos completely of their own creation, presenting their work for class critique.
- Students work together as a large, coordinated group to complete a fully realized short film project from concept through to post-production and screening.
- Students learn aspects of digital production and workflow as applied in current industry.

- CSC 432: Deep Machine Learning
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Translate latest research into practical tools for deep machine learning solutions.
- Leverage pre-existing learning models to solve adjacent problems.
- Tune models through hyperparameter tuning, regularization, and optimization.
- Structure a real-world deep machine learning problem and execute it from data to training to inference to deployment.
- Develop a deep machine learning solution to a practical problem or challenge

- CSC 433: Natural Language Processing
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Students can identify the fundamental syntactic structures of natural languages including constituency, grammatical relations, subcategorization, and dependency.
- Students can identify and explain the use of common symbolic data structures used in natural language processing such as regular and context-free grammars, finite state automata, unification grammars, and first-order logic.
- Students can identify and explain the user of common stochastic data structures used in natural language processing such as n-grams, hidden markov models, and Bayesian networks.
- Students can implement solutions to natural language processing problems using both symbolic and stochastic data structures.
- Students develop skills in research, analysis, design, implementation, and presentation of natural language processing research questions.
- Students demonstrate proficiency in hypothesis formation, experimental design, and the scientific method.
- Students demonstrate proficiency in written and oral scientific presentation.

- CSC 434: Programming Languages
**LAST DATE OF AMENDMENT: 08/01/2016**At the end of this course, the student should be able to:

- Students become familiar with common programming paradigms such as imperative, object-oriented, functional, and logic programming by studying
*representative*programming languages. - Students demonstrate the ability to learn a new programming language well enough to implement simple algorithms
- Students demonstrate knowledge of crosscutting concerns, such as types, scope rules, parameter passing techniques, memory management, with respect to programming languages.
- Students demonstrate knowledge of issues related to the implementation of programming languages such as grammars, parsing, compiling, linking, and virtual machines.
- Students develop the ability to implement algorithms using 5 or 6 different languages.
- Students gain the confidence to learn a new programming language well enough to implement simple algorithms.
- Students learn the history of programming languages and how they were developed.
- Students develop knowledge of various concepts and issues pertaining to programming languages.
- Student gain knowledge of the implementation of programming languages.
- Students gain knowledge of the strengths and weaknesses of programming languages as well as the domains for which they are intended.

- Students become familiar with common programming paradigms such as imperative, object-oriented, functional, and logic programming by studying
- CSC 437: Parallel Computing
**LAST DATE OF AMENDMENT: 02/01/2010**At the end of this course, the student should be able to:

- Students develop solutions and implement the solutions for scientific problems using multiple processors in a cluster.
- Students acquire knowledge in writing programs which require processes to synchronize and exchange data using Message Passing Interface (API).
- Students acquire knowledge in writing programs which require processes to spawn multiple treads that share memory on multiple core processors.
- Students learn to profile parallel programs by placing event probes and to log them for analysis and tuning of the program performance.

- CSC 442: Computer System Architecture
**LAST DATE OF AMENDMENT: 02/17/2010**At the end of this course, the student should be able to:

- Students develop knowledge of single and multi-processor organization alternatives.
- Students develop knowledge of I/O sub-system design alternatives.
- Students learn how pipelined processing is used to provide instruction level parallelism.
- Students learn to use CPU simulation as a tool to evaluate the consequences of processor architectural decisions.
- Students learn alternative strategies for multi-level and virtual memory design.
- Students develop a knowledge of architectural alternatives that enables them to choose algorithms that exploit architectural features appropriately.

- CSC 446: Grid Computing
**LAST DATE OF AMENDMENT: 02/17/2010**At the end of this course, the student should be able to:

- Students gain knowledge of the concepts of Grid computing including: job management, security, certificates and digital signatures, scheduling, web and grid services, index services, notification, and workflow management and portal tools.
- Students gain knowledge of the infrastructure and mechanics of the software that implements a Grid.
- Students implement algorithms in grid services.
- Students implement a solution to a problem that requires the use of multiply Grid resources at multiply sites.

- CSC 450: Software Engineering
**LAST DATE OF AMENDMENT: 09/22/2014**At the end of this course, the student should be able to:

- Gain experience, knowledge and skills working as individuals and as part of a team to develop quality software and present project results orally and in writing.
- Apply current theories, models, techniques and tools during problem identification and analysis, requirements specification, software design, implementation, software testing, software evolution and documentation.
- Design alternative solutions to a given problem and describe and reconcile alternate approaches taking into considerations technical and non-technical concerns.
- Develop the knowledge, skills, and professional awareness foundational to the practice of software engineers including an appreciation for the need for continuing professional development, leadership, good communication, negotiation, as well as effective work habits.
- Present technical software engineering material and defend design decisions as evidenced by artifacts created during the software development lifecycle.
- Critically analyze, evaluate and discuss in writing theories, models, techniques and tools relevant to problem identification and analysis, requirements specification, software design, implementation, software testing, software evolution and documentation as well as the ethical and societal impact of software engineering.
- Demonstrate the ability to analyze and evaluate arguments using rules of logic and display a clear understanding of how the ideas of other persons may be properly cited and used in written documents.
- Identify and locate appropriate sources of software engineering and related information to support decisions and written ideas.

- CSC 451: Software Assurance
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- demonstrate advanced software testing techniques and strategies
- derive and interpret code quality metrics and measurements
- describe and identify common classes of software threats, attack vectors, and vulnerabilities
- apply contemporary static and dynamic analysis toolsets for assessing software quality
- apply software reliability growth models and model-fitting to software failure rate data.

- CSC 452: Computer Vision
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Build a deep understanding of the theory of classical computer vision algorithms.
- Learn newer approaches to solving the same problems with learning-based techniques.
- Be able to compare the requirements and benefits of different types of vision algorithms and apply the best one to a particular scenario.
- Develop the ability to use their new knowledge to design and build computer vision programs for real-world applications.
- Gain familiarity with the operation, benefits, and limitations of applicable data-acquisition equipment used in computer vision work such as cameras, video cameras, document scanners, RGBD sensors, infrared sensors, laser scanners, hyperspectral cameras, etc.
- Consider the societal impacts and ethical matters surrounding the development of the computer vision field.

- CSC 455: Database Design and Implementation
**LAST DATE OF AMENDMENT: 06/03/2015**At the end of this course, the student should be able to:

- Students understand advantages and disadvantages to using database management systems.
- Students comprehend major objectives of database design: reduced redundancy, referential integrity, and normalization.
- Students comprehend major objectives of data management: atomicity, consistency, isolation, and durability.
- Students gain experience modeling data.
- Students gain experience using multiple database products and interfaces.
- Students gain experience implementing a fully functional database system.
- Students gain experience working with a group on a substantial software development project.

- CSC 457: Compiler Construction
**LAST DATE OF AMENDMENT: 02/17/2010**At the end of this course, the student should be able to:

- Describe the process of translating a high-level program into machine code.
- List and explain the algorithms used at various phases of the compile process.
- Create and explain the data structures used at various phases of the compile process.
- Describe the process of implementing programming language constructs.
- Implement a working compiler for a small subset of a high-level language.
- Evaluate and describe the impact on performance and space of using various constructs and techniques of a given programming language.

- CSC 458: Software Practicum
**LAST DATE OF AMENDMENT: 10/01/2021**At the end of this course, the student should be able to:

- Analyze and implement a large-scale software project for an external customer. [CR1] [CR4] [EBC2]
- Evaluate related products on the current software market. [CR1]
- Elicit, analyze, and negotiate customer requirements. [CR2] [CR3] [EBC1] [EBC2]
- Research, learn, and use state-of-the-practice software technologies and tools. [CR1] [CR2]
- Apply an iterative software project management process where each iteration consists of planning, execution, review, and retrospection. [CR3]
- Document software plans, requirements, designs, test plans, and user documentation using industry best practice. [CR4]
- Define and reflect on goals for professional development. [EBC1] [EBC3]
- Communicate effectively with an external customer through written and oral communications.[EBC2] [EBC3]

- CSC 461: Virtual Reality
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Demonstrate an understanding of fundamental techniques, processes, technologies and equipmentsed in immersive virtual reality.
- Begin to explore materials and processes used in immersive virtual reality.
- Show a basic awareness and understanding of historical and theoretical contexts relevant to immersive virtual reality.
- Build a comprehensive virtual reality experience.

- CSC 462: Artificial Intelligence for Cybersecurity
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Understand AI applications in cybersecurity, Threat Intelligence, Malware Analysis.
- Describe threats to AI models.
- Understand advanced AI research topics and case studies such as adversarial learning and advanced threat detection.

- CSC 464: Advanced Cryptography and Blockchain
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Describe how various cryptographic algorithms and protocols work.
- Evaluate security mechanisms based on cryptography.
- Describe the application of cryptography in SSL, virtual private networks, secure storage, and other security applications.
- Take a mode or protocol diagram and identify how an error propagates through the cryptosystem.

- CSC 465: Database-Driven Web Application Development
**LAST DATE OF AMENDMENT: 10/01/2021**At the end of this course, the student should be able to:

- Students can create dynamic Web sites using a server-side scripting language.
- Students can use a server-side scripting language to interface with a database.
- Students can implement cookies and session tracking and can explain their importance in Web sitedevelopment.
- Students can use regular expressions, handle exceptions, and validate data.
- Students can discuss security issues and best practices for secure Web sites.
- Students can organize large Web sites using industry best-practices.

- CSC 466: Malware Analysis
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Describe software security analysis tools and techniques.
- Apply their knowledge to perform software security analysis, using common tools, against previously unknown software components.
- Describe compilation process that translates high-level code to machine code.
- Safely describe and decompose malware samples.

- CSC 468: Reverse Engineering
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Students should be able to use common software reverse engineering tools to safely perform static and dynamic analysis of software (or malware) of unknown origin for the purposes of understanding the software functionality and implementation.
- Students demonstrate proficiency in reverse engineering methodologies and tools.
- Students will gain a basic understanding of software forensics and malware analysis.
- Students will be able to trace, understand, and modify binary file execution.

- CSC 470: Hardware Security
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Outline physical vulnerabilities of hardware devices.
- Explain and make use of security capabilities implemented in hardware.
- Describe how systems are initialized and how software is validated and loaded.
- Describe the security role of intermediate software such as hardware abstraction layers or other forms of middleware.

- CSC 472: Generative Deep Learning
**LAST DATE OF AMENDMENT: 10/01/2020**At the end of this course, the student should be able to:

- Students will develop basic knowledge of deep machine learning using popular computing frameworks.
- Students will learn basic knowledge of data wrangling and hyperparameter tuning.
- Students will understand the difference between discriminative and generative deep learning techniques.
- Students will develop basic knowledge of adversarial learning techniques: autoencoders, variational autoencoders, generative adversarial networks, etc.
- Students will develop generative deep learning solutions for multiplicity of data types.
- Students will understand the impacts of generative modeling and future implications of the technology.