UNT | University of North Texas

Search form

Undergraduate Courses

Course outcomes are measurable achievements to be accomplished by the completion of a course. These outcomes are evaluated as part of our ABET accreditation process.

1010 - INTRODUCTION TO COMPUTER SCIENCE (NON-MAJORS)

Covers logical operation and organization of digital computers, computer hardware and software, number systems, and application software packages.

Credit Hours: 3

Textbook:

Blown to Bits: Your Life, Liberty, and Happiness after the Digital Explosion, Abelson, Ledeen, Lewis, Pearson. This book is freely available on the web.

Course Coordinator: Phil Sweany

Course Outcomes:
  1. Students will practice and enhance their creative abilities within the development of software.
  2. Students will use abstraction to reduce information and detail in order to facilitate focus on relevant topics. In software this typically occurs both in designing algorithms and creating modules within their programs.
  3. Students will access and summarize available data to create information and evaluate information to create knowledge.
  4. Students will develop, evaluate and use algorithms in defining solutions to computational problems.
  5. Students will create software that enables problem solving, human expression and creation of knowledge.
  6. Students will both describe how the internet pervades modern computing and make effective and ethical use of the internet in solving problems.
  7. Students will recognize, discuss and describe the global impacts of computing.
1020 - PROGRAM DEVELOPMENT (NON-MAJORS)

Introduction to problem-solving, algorithms and programming in a high-level language. May not be counted toward a computer science major or minor.

Prerequisites:

High school algebra or equivalent

Credit Hours: 4

Textbook:

Introduction to C Programming, Retzlaff, Kendall Hunt Publishers, ISBN 9780757594359

Course Coordinator: Phil Sweany

Course Outcomes:
  1. Understand programming and problem solving.
  2. Understand and be able to develop algorithms.
  3. Be able to develop, design and implement simple computer programs.
  4. Understand how to perform basic debugging of existing programs.
  5. Understand functions and parameter passing.
  6. Be able to do numeric (algebraic) and string based computation.
1030 - COMPUTER SCIENCE I

Introduction to computer science and engineering, problem-solving techniques, algorithmic processes, software design and development.

Prerequisites:

MATH 1650 with a grade of C or better

Credit Hours: 4

Textbook:

Problem Solving with C++, Walter Savitch, 9th edition 2014, Addison Wesley, ISBN 9780133591743

Course Coordinator: David Keathly

Course Outcomes:
  1. Describe how a computer's CPU, Main Memory, Secondary Storage and I/O work together to execute a computer program.
  2. Make use of a computer system's hardware, editor(s), operating system, system software and network to build computer software and submit that software for grading.
  3. Describe algorithms to perform simple tasks such as numeric computation, searching and sorting, choosing among several options, string manipulation, and use of pseudo-random numbers in simulation of such tasks as rolling dice.
  4. Write readable, efficient and correct C/C++ programs that include programming structures such as assignment statements, selection statements, loops, arrays, pointers, console and file I/O, structures, command line arguments, both standard library and user-defined functions, and multiple header (.h) and code (.c) files.
  5. Use commonly accepted practices and tools to find and fix runtime and logical errors in software.
  6. Describe a software process model that can be used to develop significant applications composed of hundreds of functions.
  7. Perform the steps necessary to edit, compile, link and execute C/C++ programs.
1040 - COMPUTER SCIENCE II

Continuation of CSCE 1030. Software design, structured programming, object-oriented design and programming.

Prerequisites:

CSCE 1030, Corequisite: MATH 1710

Credit Hours: 3

Textbook:

Problem Solving with C++, Walter Savitch, 9th edition 2014, Addison Wesley, ISBN 9780133591743

Course Coordinator: David Keathly

Course Outcomes:
  1. Write readable, efficient, and correct C++ programs for all programming constructs defined for Programming Fundamentals I plus dynamic memory allocation, bit manipulation operators, exceptions, classes and inheritance.
  2. Design and implement recursive algorithms in C/C++.
  3. Use common data structures and techniques such as stacks, queues, linked lists, trees and hashing.
  4. Create programs using the Standard Template Library.
  5. Use a symbolic debugger to find and fix runtime and logical errors in C software.
  6. Using a software process model, design and implement a significant software application in C++. Significant software in this context means a software application with at least five files, ten functions and a make file.
  7. Implement, compile and run C++ programs that includes classes, inheritance, virtual functions, function overloading and overriding, as well as other aspects of Polymorphism.
2100 - COMPUTING FOUNDATIONS I

Introduces students to both data structures and formalisms used in computer science, such as asymptotic behavior of algorithms. Data structures and the formalisms used to both describe and evaluate those data structures simultaneously. By the end of the two-semester sequence of which this course is the first part, each student will have a solid foundation in conceptual and formal models, efficiency, and levels of abstraction as used in the field of computer science.

Prerequisites:

CSCE 1040

Credit Hours: 3

Textbook:

online textbook Foundations of Computer Science by Alfred Aho and Jeffrey Ullman: http://infolab.stanford.edu/~ullman/focs.html

Course Coordinator: Phil Sweany

Course Outcomes:

1. Use abstraction in design and implementation of algorithms.

2. Use induction in proofs of algorithms and programs.

3. Use C++ classes and inheritance in implementation of algorithms using list and tree data structures.

4. Estimate the running time of programs using big-Oh notation.

5. Use recurrence relations to evaluate the running time of recursive programs.

6. Apply principles of combinatorics and probability to solve real-world problems.

 

2110 - COMPUTING FOUNDATIONS II

Continuation of Computing Foundations I. Further introduces students to both data structures and formalisms used in computer science, such as asymptotic behavior of algorithms. Data structures and formalisms used to both describe and evaluate those data structures simultaneously. By the end of the two-semester sequence of which this course is the second part, each student will have a solid foundation in conceptual and formal models, efficiency, and levels of abstraction as used in the field of computer science.

Prerequisites:

CSCE 2100

Credit Hours: 3

Textbook:

online textbook Foundations of Computer Science by Alfred Aho and Jeffrey Ullman: http://infolab.stanford.edu/~ullman/focs.html

Course Coordinator: Phil Sweany

Course Outcomes:

1. Use of C++ classes to implement graphs, sets and relational data structures.

2. Design and implement data structures to implement operators of relational algebras.

3. Describe the relative strengths and weaknesses of the three common data structures used to implement sets, namely linked lists, characteristic vectors and hash tables.

4. Use regular expressions, deterministic finite automata and non-deterministic automata to describe patterns.

5. Provide proofs of the correctness and optimality of graph algorithms such as Kruskal's minimum cost spanning tree and Dijkstra’s shortest path

2410 - PROGRAMMING LABORATORY

Practice with computer languages and processing techniques.

Prerequisites:

CSCE 1040 or BCIS 3620 or BCIS 3690

Course Outcomes:

Course outcomes for C++:

  1. Be able to develop, design and implement simple computer programs.
  2. Understand functions and parameter passing.
  3. Be able to do numeric (algebraic) and string-based computation.
  4. Understand object-oriented design and programming.
  5. Understand dynamic memory allocation and pointers.
  6. Be able to design, implement, and test relatively large C++ programs.

Course outcomes for JAVA:

  1. Understand the format and use of objects.
  2. Understand basic input/output methods and their use.
  3. Understand object inheritance and its use.
  4. Understand development of JAVA applets vs. JAVA applications.
  5. Understand the use of various system libraries.

Course outcomes for PHP:

  1. Understand process of executing a PHP-based script on a webserver.
  2. Be able to develop a form containing several fields and be able to process the data provided on the form by a user in a PHP-based script.
  3. Understand basic PHP syntax for variable use, and standard language constructs, such as conditionals and loops.
  4. Understand the syntax and use of PHP object-oriented classes.
  5. Understand the syntax and functions available to deal with file processing for files on the server as well as processing web URLs.
  6. Understand the paradigm for dealing with form-based data, both from the syntax of HTML forms, and how they are accessed inside a PHP-based script.

Course outcomes for .NET:

  1. Display proficiency in C# by building stand-alone applications in the .NET framework using C#.
  2. Create distributed data-driven applications using the .NET Framework, C#, SQL Server and ADO.NET
  3. Create web-based distributed applications using C#, ASP.NET, SQL Server and ADO.NET
  4. Utilize DirectX libraries in the .NET environment to implement 2D and 3D animations and game-related graphic displays and audio.
  5. Utilize XML in the .NET environment to create Web Service-based applications and components.
2610 - ASSEMBLY LANGUAGE AND COMPUTER ORGANIZATION

Principles of computer systems organization, instruction sets, assembly language programming, computer arithmetic, data and control paths, and introduction to memory hierarchy.

Prerequisites:

CSCE 2100. Corequisite(s): ENGR 2720 and ENGR 2730 (taken concurrently).

Credit Hours: 3

Textbook:

Computer Organization & Design: The Hardware/Software Interface, David Patterson and John Hennessy, 5th edition 2013, Elsevier Science, ISBN 9780124077263

Course Coordinator: Krishna Kavi

Course Outcomes:
  1. Understand the role of the different classes and components in a computer system and the interface between software and hardware in a computer system.
  2. Apply metrics to evaluate performance of a computer system using clock rate and clock cycles per instruction (CPI). Understand the different aspects of execution times reported when program complete their execution.
  3. Understand instruction set choices and write assembly language programs for simple C code and codes that include procedures.
  4. Perform integer and floating point calculations using computer arithmetic algorithms.
  5. Describe the organization of a simple processor with data path and control path for simple instructions.
  6. Describe the requirement of memory hierarchy and evaluate the performance of different cache organizations.
2900 - SPECIAL PROBLEMS IN COMPUTER SCIENCE & ENGINEERING

Individualized instruction in theoretical or experimental problems. For elective credit only.

2996 - HONORS COLLEGE MENTORED RESEARCH EXPERIENCE

Research experience conducted by a freshman or sophomore honors student under the supervision of a faculty member. May be taken only once for Honors College credit.

Prerequisites:

Admission to the Honors College, freshman or sophomore class status, consent of Honors College dean

Credit Hours: 3

3010 - SIGNALS AND SYSTEMS

Elementary concepts of continuous-time and discrete-time signals and systems. Specific topics include linear time-invariant (LTI) systems, impulse response, convolution, Fourier series, Fourier transforms, frequency-domain analysis of LTI systems, Laplace transforms, z-transforms, and rational function descriptions of LTI systems.

Prerequisites:

ENGR 2405; ENGR 2415; and MATH 2730 or MATH 3410

Credit Hours: 3

Textbook:

Signals & Systems, 2nd edition, Roberts, McGraw-Hill, ISBN 9780073380681

Course Coordinator: Robert Akl

Course Outcomes:
  1. Understand the mathematical descriptions of continuous-time (CT) and discrete-time (DT) signals.
  2. Understand the characteristics and properties of real systems.
  3. Analyze signals and systems in both the time and frequency domain.
  4. Gain experience with CT and DT Fourier series.
  5. Apply the properties of the Fourier transform, Laplace transform and z-transform to real systems.
3020 - COMMUNICATIONS SYSTEMS

Introduction to the concepts of transmission of information via communication channels. Amplitude and angle modulation for the transmission of continuous-time signals. Analog-to-digital conversion and pulse code modulation. Transmission of digital data. Introduction to random signals and noise and their effects on communication. Optimum detection systems in the presence of noise.

Prerequisites:

CSCE 3010

Credit Hours: 3

Textbook:

Signals & Systems, 2nd edition, Roberts, McGraw-Hill, ISBN 9780073380681

Course Coordinator: Robert Akl

Course Outcomes:
  1. Analyze the frequency response of communication systems.
  2. Represent continuous-time signals by samples.
  3. Determine the energy and power spectral density of signals.
  4. Plot pole-zero diagrams.
  5. Design analog and digital filters.
3030 - PARALLEL PROGRAMMING

Introduction to processing in parallel and distributed computing environments. General concepts of parallel machine models, processes, threads, mutual exclusion, synchronization and message passing. Design and analysis of parallel algorithms for engineering and scientific applications. Parallel programming using message passing and shared memory paradigms.

Prerequisites:

CSCE 2100

Credit Hours: 3

Textbook:

Introduction to Parallel Computing, Grama, Karypis, Kumar, Gupta, 2nd edition 2003, ISBN 9780201648652

Course Coordinator: Paul Tarau

Course Outcomes:

1. Differentiate between different types of parallel and distributed systems.

2. Understand heterogeneous systems and accelerators.

3. Write parallel programs for shared memory and GPU based systems.

4. Analyze speed up achieved by parallel implementations of applications.

5. Tune parallel programs to improve their performance.

6. Apply parallel algorithms to solve matrix, graph, searching and sorting problems.

3055 - IT PROJECT MANAGEMENT

Provides students with the tools and techniques needed to manage a wide variety of IT systems projects, including software design and development, IT systems design and installation, network management and support and others. Students develop and practice skills through the use of case studies and other project-based exercises.

Prerequisites:

CSCE 2100

Credit Hours: 3

Textbook:

Lecture Notes, Slides and Online Resources. http://www.cse.unt.edu/~garlick/

Course Coordinator: David Keathly

Course Outcomes:
  1. Demonstrate the use of good project management techniques and tools in the development of a management plan for an IT project.
  2. Demonstrate an understanding of the unique management requirements of different types of IT Systems projects.
  3. Develop a management plan and budget for an IT project.
  4. Demonstrate an understanding of team management and conflict resolution skills through a number of small management projects.
  5. Create a system lifecycle document for a sample problem including all components using the Unified Modeling Language.
3110 - DATA STRUCTURES AND ALGORITHMS

Time complexity of algorithms; merge sort and heap sort; data structures for trees and graphs; elementary graph algorithms; breadth-first search; depth-first search; topological sorting; Prim’s algorithm and Kruskal’s algorithm.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Data Structures & Algorithm Analysis in C++, Mark Weiss, 2013, ISBN 9780132847377

Course Coordinator: Farhad Shahrokhi

Course Outcomes:

1.  Understand time complexity of algorithms.

2.  Be able to solve recurrence relations.

3.  Understand and be able to analyze the performance of data structures for searching, including balanced trees, hash tables, and priority queues.

4.  Apply graphs in the context of data structures, including different representations, and analyze the usage of different data structures in the implementation of elementary graph algorithms including depth-first search, breadth-first search, topological ordering, Prim's algorithm, and Kruskal's algorithm.

5.  Be able to code the above-listed algorithms.

3210 - SYMBOLIC PROCESSING

Introduction to symbolic processing using LISP, Prolog or related languages, recursion, building abstractions with data, modularity, objects and state, meta-linguistic abstraction.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Artificial Intelligence w/Common LISP, 1st edition, Noyes, Jones & Bartlett, ISBN 9780669194739

Course Coordinator: Kathleen Swigger

Course Outcomes:
  1. Understand Lisp data types, internal functions, advanced Lisp objects and abstractions.
  2. Understand the design principles of artificial intelligence.
  3. Understand basic principles of Search, two player games and neural networks.
  4. Understand one or more application in Artificial Intelligence.
3220 - HUMAN COMPUTER INTERFACES

Human-Computer Interaction (HCI). Methods for designing, prototyping, and evaluating user interfaces for computing applications. Human capabilities, interface technology, interface design methods, and interface evaluation tools and techniques.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Course Coordinator: Kathleen Swigger

Course Outcomes:
  1. Students should be able to demonstrate knowledge of the different phases of the interface design process. (i.e., what each phase does, as well as demonstrate that they can do that particular process.)
  2. Students should be able to perform the different phases of the interface design process.
  3. Students should be able to demonstrate knowledge of predictive models of users and show how these models affect the design of an interface. The list of predictive models include: Fitz Law, Keystroke Model, Hick-Hyman model, Cognitive Models.
  4. Students should be able to use the different user predictive models to determine the usability and efficiency of a particular interface.
  5. Students should be able to demonstrate that they can design and develop a computer-user interface.
  6. Students should be able to know the different types of interface evaluations.
  7. Students should be able to perform different types of evaluations of interfaces.
3410 - ADVANCED PROGRAMMING

Advanced features and topics in modern programming languages and introduction to a variety of languages, and advanced programming concepts and methodologies. Topics vary by section and semester. May be repeated for credit as topics vary.

Prerequisites:

CSCE 2100

Credit Hours: 3

Course Outcomes:

Course outcomes for C++:

  1. Be able to develop, design and implement simple computer programs.
  2. Understand functions and parameter passing.
  3. Be able to do numeric (algebraic) and string-based computation.
  4. Understand object-oriented design and programming.
  5. Understand dynamic memory allocation and pointers.
  6. Be able to design, implement, and test relatively large C++ programs.

Course outcomes for JAVA:

  1. Understand the format and use of objects.
  2. Understand basic input/output methods and their use.
  3. Understand object inheritance and its use.
  4. Understand development of JAVA applets vs. JAVA applications.
  5. Understand the use of various system libraries.

Course outcomes for PHP:

  1. Understand process of executing a PHP-based script on a webserver.
  2. Be able to develop a form containing several fields and be able to process the data provided on the form by a user in a PHP-based script.
  3. Understand basic PHP syntax for variable use, and standard language constructs, such as conditionals and loops.
  4. Understand the syntax and use of PHP object-oriented classes.
  5. Understand the syntax and functions available to deal with file processing for files on the server as well as processing web URLs.
  6. Understand the paradigm for dealing with form-based data, both from the syntax of HTML forms, and how they are accessed inside a PHP-based script.

Course outcomes for .NET:

  1. Display proficiency in C# by building stand-alone applications in the .NET framework using C#.
  2. Create distributed data-driven applications using the .NET Framework, C#, SQL Server and ADO.NET
  3. Create web-based distributed applications using C#, ASP.NET, SQL Server and ADO.NET
  4. Utilize DirectX libraries in the .NET environment to implement 2D and 3D animations and game-related graphic displays and audio.
  5. Utilize XML in the .NET environment to create Web Service-based applications and components.

Course outcomes for Android Programming:

  1. Understand the existing state of mobile app development via researching existing apps, meeting with industry professionals, and formulating new ideas.
  2. Display proficiency in coding on a mobile programming platform.
  3. Understand the limitations and features of developing for mobile devices.
  4. Create a complete Mobile app with a significant programming component, involving the sensors and hardware features of the phone.
  5. Understand the economics and features of the app marketplace by offering the app for download.
3420 - INTERNET PROGRAMMING

Covers Internet programming in depth, including client-server, peer-to-peer, and web applications. Primary goal is to help students understand the principles of how distributed applications are built, while also giving them practical experience in creating common Internet applications.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Lecture Notes, Slides and Online Resources. http://www.cse.unt.edu/~garlick/

Course Coordinator: Ryan Garlick

Course Outcomes:
  1. Students will demonstrate knowledge of Internet structure and basic protocols.
  2. Students will demonstrate knowledge of and proficiency of basic techniques for web-based design.
  3. Students will demonstrate knowledge of programming techniques for a web application.
  4. Students will demonstrate knowledge of collecting and processing information obtained through an Internet application.
  5. Understand the process of executing a PHP-based script on a web server.
  6. Be able to develop a form containing several fields and be able to process the data provided on the form by a user in a PHP-based script.
  7. Understand basic PHP syntax for variable use, and standard language constructs, such as conditionals and loops, user-defined functions, and the processing of files on the server.
3450 - GLOBAL SOFTWARE DEVELOPMENT

Students will be provided knowledge of and practical experience in working within a distributed collaborative team to develop a complex software product in an academic environment. Students will learn how to use professional collaborative development tools in order to facilitate the completion of a large software product within a scheduled time frame. Students will learn how to work in teams and understand the processes that govern the effectiveness of developing software systems in a global setting.

Prerequisites:

CSCE 2100

Credit Hours: 3

Textbook:

Class handouts and online references

Course Coordinator: Kathleen Swigger

Course Outcomes:
  1. Understand the challenges of Global Software Development (GSD).
  2. Learn how to work together in a multi-cultural, multi-national context.
  3. Develop software in geographically distributed teams.
  4. Acquire the soft skills required of working in global teams.
  5. Learn how to manage collaborative teams.
  6. Learn how to use collaborative technologies (such as online inspection tools and videoconferencing) for remote communication.
  7. Improve professional skills (such as writing project proposals, requirements negotiations and formal presentations).
3520 - DATA COMMUNICATIONS

Overview of data communication, communication models and networking. Analog and digital data transmission, transmission impairments, channel capacity, asynchronous and synchronous transmission, error detection and correction, flow control and error control. Multiplexing and de-multiplexing techniques (FDM, STDM, ADSL, and xDSL). Ethernet interfaces, IEEE 802.3 and IEEE 802.11 MAC layer. Interface Standards (RS-232, RS-449 and X.21). Packet switching, Frame Relay and ATM switching, bridges, layer2 and layer3 switches.

Prerequisites:

CSCE 3600

Credit Hours: 3

Course Coordinator: Ram Dantu

3530 - INTRODUCTION TO COMPUTER NETWORKS

Introduction to data communications, asynchronous, synchronous, networks and current technology.

Prerequisites:

CSCE 3600

Credit Hours: 3

Textbook:

Computer Networking: A Top-Down Approach featuring Internet, 6th edition, Kurose, Addison Wesley, ISBN 9780132856201

Course Coordinator: Ram Dantu

Course Outcomes:
  1. Understand a conceptual view of the role of computers in communications.
  2. Understand communication protocols in the Internet.
  3. Be able to do fundamental network programming.
  4. Understand different network architecture.
  5. Recognize the role of application protocols.
  6. Understand different routing and forwarding protocols.
3535 - INTRODUCTION TO NETWORK ADMINISTRATION

Students explore topics in network administration in theoretical and practical way, study different software platforms, control, shared resources, administration, security, anti-virus procedures and methodologies.

Prerequisites:

CSCE 3530

Credit Hours: 3

Textbook:

Required: Hands-On Information Security Lab Manual (w/CD), 3rd edition, Whitman, Coute, ISBN 9780619216313, Principles of Information Security, 4th edition, Whitman, Coute, ISBN 9781423901778

Course Coordinator: Phil Sweany

Course Outcomes:

1. Demonstrate understanding of IP addressing, sub-netting and networks configuration but configuring and setting up a network across a heterogeneous group of computers.

2. Describe network planning and design of local-area-network (LAN) and wide-area-network (WAN) networks.

3. Describe quality of service (QoS) parameters and how they relate to network availability.

4. Configure, operate and troubleshoot routing protocols such as Open-Shortest-Path-First (OSPF) and Border-Gate-Protocol (BGP).

5. Install and configure simple network security tools such as Intrusion-Prevention-System (IPS), Intrusion-Detection-System (IDS), firewalls and virus scanners.

6. Evaluate network performance both by simulation and by designing, gathering, and analyzing experiments.

3600 - PRINCIPLES OF SYSTEMS PROGRAMMING

Introduction to the design and operation of systems software. Analysis is made of current system software technology, including operating systems, language translation systems and file systems.

Prerequisites:

CSCE 2100

Credit Hours: 3

Textbook:

System Programming with C and Unix, 1st Edition, Hoover, Addison Wesley, ISBN 9780136067122

Course Coordinator: Mark Thompson

Course Outcomes:
  1. Write robust, efficient, readable and correct system software using the C programming language.
  2. Demonstrate an understanding of processes and threads by developing applications using multiple processes and multi-threaded activities in a Linux environment.
  3. Demonstrate an understanding of deadlocks and synchronization through the development of application(s) that utilize a variety of mutual exclusion mechanisms.
  4. Develop shell scripts and utilities that demonstrate an understanding of memory, file and process management and interaction, including concepts such as virtual memory and disk scheduling.
  5. Create a Linux-based application that utilizes inter-process communication mechanisms such as pipes and sockets to communicate information between independently running processes on one or multiple platforms.
  6. Demonstrate an understanding of the use and interaction among compilers, macro processors, assemblers, linkers and loaders through their use in creating the applications described in previous outcomes.
3605 - SYSTEMS ADMINISTRATION

Prepares students with an understanding of Virtual Machines with universal principles that apply to all operating systems structure and operation including the concepts of processes, resource and file management and performance. Students also develop an understanding of the pervasive use of Unix based operating systems in the design of various systems such as switches, routers, Load balances, wireless controllers and network Management platforms to provide various services to support interaction between computer-based systems.

Prerequisites:

CSCE 3600

Credit Hours: 3

Textbook:

System Programming with C & Unix, 1st edition, Hoover, Addison Wesley, ISBN 9780136067122

Course Outcomes:

1. Identify and analyze user needs.

2. Structure user requirements in the selection, creation, evaluation and administration of computer-based systems.

3. Demonstrate an understanding of the principles of computer systems maintenance by providing and maintaining computers for users with a wide range of computing needs and abilities.

4. Design various hardware components such as switches, routers, load balancers, wireless controllers and network management platforms to provide network services that support interaction among computer-based systems.

5. Effectively integrate IT-Based solutions into the user environment.

3610 - INTRODUCTION TO COMPUTER ARCHITECTURE

Design of simple and pipelined processor, introduction to co-processor and its design, techniques to improve performance, memory hierarchy, cache memories, input-output system, and interrupts.

Prerequisites:

CSCE 2610; CSCE 3730.

Credit Hours: 3

Course Outcomes:
  1. Design ALUs to perform integer and floating point arithmetic including addition, subtraction, multiplication and division
  2. Design a simple single-cycle processor using Hardware Description Language (HDL)
  3. Design a simple processor pipeline
  4. Design a co-processor
  5. Apply compiler techniques to improve program performance
  6. Evaluate cache memories and various cache design alternatives
  7. Demonstrate understanding of input-output systems and interrupts by writing simple interrupt handlers.
3612 - EMBEDDED SYSTEMS DESIGN

Computer systems as embedded computing elements and micro-controllers. System specification using UML or other high-level abstract models. Issues and constraints on embedded computing systems, including power, performance, memory and size. Use of DSP, ASIC and micro-controllers in a single design.

Prerequisites:

CSCE 2610; ENGR 2720; ENGR 2730

Credit Hours: 3

Textbook:

Computers as Components, Marilyn Wolf, 2012, ISBN 9780123884367

Course Coordinator: Song Fu

Course Outcomes:
  1. Understand the differences between embedded computing systems and general purpose computing systems, including constraints on performance, energy consumption, memory and physical dimensions.
  2. Able to specify embedded systems using UML or other high level abstract models.
  3. Able to use modern micro-controllers, including programming and interfacing such micro-controllers.
  4. Understand the use of DSP processors and other Application Specific processors.
  5. Understand trade-offs associated with using micro-controllers, DSPs, ASICs and FPGAs to meet embedded system requirements.
3615 - ENTERPRISE SYSTEMS ARCHITECTURE AND DESIGN

Introduces upper division IT students to concepts of system architecture, design and software engineering that are needed for career opportunities as Software, System and Business Analysts. Topics include enterprise architecture design, requirements analysis, software and systems lifecycle methodologies, Unified Modeling Language, analysis and design methodologies and other related topics. Project activities will expose all students to the full design and specification of IT systems to meet a variety of business and technical problems, as well as prepare them for their Capstone course experiences.

Prerequisites:

CSCE 2100

Credit Hours: 3

Course Coordinator: David Keathly

Course Outcomes:

1. Demonstrate an understanding of the multiple layers of abstraction in modern computer systems and the interface between software and hardware.

2. Evaluate the hardware requirements for at IT System and select the proper architecture and components necessary to satisfy the requirements.

3. Evaluate the software requirements for an IT System, and define a software architecture to satisfy the requirements.

4. Demonstrate an understanding of the use of UML and analysis and design patterns in the development of a system design.

5. Demonstrate understanding of design and development methodologies and architectural paradigms through laboratory assignments and a class project.

6. Demonstrate communication skills that will enable clear reasoning and logical descriptions of problems and solutions in the design, implementation and management of large-scale IT Systems.

3730 - RECONFIGURABLE LOGIC

Advanced concepts in Boolean algebra, use of hardware description languages as a practical means to implement hybrid sequential and combinational designs, digital logic simulation, rapid prototyping techniques, and design for testability concepts. Focuses on the actual design and implementation of sizeable digital design problems using representative computer aided design (CAD) tools.

Prerequisites:

CSCE 2610

Credit Hours: 3

Textbook:

Required: FPGA-Based System Design, 2004, Wolf, Prentice Hall, ISBN 9780131424616; Optional: Designer's Guide to VHDL, 3rd edition, Ashenden, Morka, ISBN 9780120887859; VHDL: A Starter's Guide, 2nd Edition, Yalamanchili, Prentice Hall, ISBN 9780131457355

Course Coordinator: Song Fu

Course Outcomes:
  1. Students will understand the concept of reconfigurable logic.
  2. Students will know how FPGA (most popular reconfigurable device) is designed.
  3. Have an overall view of Computer Aided Design (CAD) for FPGA.
  4. Understand specific algorithms utilized in technology mapping, placement and routing.
  5. Learn how to use the hardware description language -- VHDL to simulate and synthesis digital circuit system.
  6. Capable of using commercial CAD tools to design and simulate digital circuits.
3850 - INTRODUCTION TO COMPUTATIONAL LIFE SCIENCE

Survey treatment of the applications of computational paradigms in the natural and physical sciences. Designed to have a broad appeal to natural and physical science students as well as computer science students. (Same as BIOL 3850.)

Prerequisites:

CSCE 2100 or consent of instructor

Credit Hours: 3

Textbook:

Beginning Perl for Bioinformatics: An Introduction to Perl for Biologists, 2001, Tisdall, O'Reilly, ISBN 9780596000806

Course Coordinator: Armin Mikler

Course Outcomes:
  1. Understand the interdisciplinary nature of computational life sciences.
  2. Develop software applications for computational problems in a programming language preferred by computational life science practitioners.
  3. Understand the axioms and basic theorems of probability and conditional probability as applied in life science problems.
  4. Learn the fundamentals of agent and mobile agent systems.
  5. Learn to evaluate various high performance computer architectures in terms of metrics related to performance.
  6. Understand the fundamental concepts in Visualization including applications in computational life science problems.
3996 - HONORS COLLEGE MENTORED RESEARCH EXPERIENCE

Research experience conducted by an honors student with at least junior standing under the supervision of a faculty member. May only be taken once for Honors College credit.

Prerequisites:

Admission to the Honors College, at least junior class status, consent of Honors College dean

Credit Hours: 3

4010 - SOCIAL ISSUES IN COMPUTING

The effect of computer science and engineering on the home and the workplace, with emphasis on the role of the computer professional in modern society.

Prerequisites:

CSCE 3600 or consent of instructor.

Credit Hours: 3

Textbook:

Computer Ethics, Deborah Johnson, 2009 4th edition, ISBN 9780131112414

Course Coordinator: Xiaohui Yuan

Course Outcomes:
  1. Develop an awareness of the social responsibilities of computer science and engineering.
  2. Understand the need for computer science and engineering ethics.
  3. Generate an effective written communication incorporating a topic related to social and ethical issues and principles in computer science and engineering.
  4. Deliver an oral presentation about a topic related to a particular social or ethical issue related to computer science and engineering.
4011 - ENGINEERING ETHICS

The effect of technology in modern society with emphasis on the role of engineering and technical professionals.

Prerequisites:

CSCE 3600 or consent of instructor.

Credit Hours: 3

Textbook:

Engineering Ethics, Charles B. Fleddermann, 2012 4th edition, ISBN 9780132145213

Course Coordinator: Xiaohui Yuan

Course Outcomes:
  1. Develop an awareness of the social responsibilities of engineering.
  2. Understand the need for engineering ethics.
  3. Generate an effective written communication incorporating a topic related to social and ethical issues and principles in engineering.
  4. Deliver an oral presentation about a topic related to a particular social or ethical issue related to engineering.
4050 - APPLICATIONS OF CRYPTOGRAPHY

Aims to introduce students to concepts of cryptography and its applications. Cryptography is the fundamental building block of any computer security solution. The knowledge gained from the course will enable students to apply these cryptographic algorithms in a better way to design security solutions.

Prerequisites:

CSCE 2110

Credit Hours: 3

Textbook:

Cryptography Engineering: Design Principles and Practical Applications, Niels Ferguson, Bruce Schneier, Tadayoshi Kohno, 2010, ISBN 9780470474242

Course Coordinator: Hassan Takabi

Course Outcomes:
  1. Understand Symmetric and Asymmetric encryption systems.
  2. Understand various block cipher modes.
  3. Demonstrate knowledge of standard symmetric encryption systems, such as, DES and AES.
  4. Demonstrate knowledge of standard asymmetric encryption systems, such as, RSA.
  5. Demonstrate knowledge of common cryptography applications, such as, KERBEROS, PGP, and PKI Systems.
  6. Understand hash functions and message authentication codes.
4110 - ALGORITHMS

Time complexity of algorithms; algorithm design methodologies including divide and conquer, greedy, and dynamic programming; exposure to approximation algorithms for NP-hard problems; performance evaluation of algorithms.

Prerequisites:

CSCE 3110

Credit Hours: 3

Textbook:

Introduction to Algorithms (w/CD), Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein, 2009, ISBN 9780262033848, Computer Algorithms, Ellis Horowitz, Sartaj Sahni, Sanguthevar Rajasekaran, 2007, ISBN 9780929306414

Course Coordinator: Farhad Shahrokhi

Course Outcomes:
  1. Be able to analyze the time and space complexity of a nontrivial algorithm, using mathematical tools, and prove/justify the correctness.
  2. Understand the Divide and Conquer, Greedy, and Dynamic Programming strategies for algorithmic design.
  3. Be familiar with the algorithms for Matrix Multiplication (Strassen's), Activity Selection, Knapsack, Shortest Paths (single source, and all pairs), Minimum Spanning Tree (Prim's and Kruskal's), Matrix Chain, and Longest Common Subsequence problems.
  4. Be exposed to approximation algorithms for solving NP-hard problems.
  5. Be able to determine and measure the efficiency of a given algorithm, in practice, through different possible implementations, and by testing on suitable data sets.
  6. Be able to communicate clearly and precisely in writing about the theoretical analysis of an algorithm and its efficiency in practice.
4115 - FORMAL LANGUAGES, AUTOMATA, AND COMPUTABILITY

Introduces students to the formal language theory that underlies modern computer science. Topics include different representational forms for regular languages, context-free grammars, pushdown automata, pumping lemmas for regular and context-free languages, and Chomsky's hierarchy.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Introduction to Automata Theory, Languages & Computation, Hopcroft, Motwani, Ullman, 3rd edition, Addison Wesley, ISBN 9780321462251

Course Coordinator: Barrett Bryant

Course Outcomes:
  1. Convert a regular expression to an equivalent NFA or DFA.
  2. Apply the pumping lemma for regular languages to prove that a given non-regular language is, in fact not regular.
  3. Apply the pumping lemma for context-free languages to prove that, given a grammar, G, that is not context-free that G, in fact, is not context-free.
  4. Prove that any context-free grammar, G, can be converted to a pushdown automata that accepts the same language as G.
  5. Describe the concept of undecidability, give an example of an undecidable language, UL, and prove that UL is undecidable.
  6. Demonstrate that a "real" computer can be simulated by a Turing machine.
  7. Demonstrate the concept of NP-completeness, give an example of an NP-complete problem NPCP, and prove that NPCP is NP-complete.
4200 - WEB SEARCH AND INFORMATION RETRIEVAL

Covers traditional material and recent advances in information retrieval, study of indexing, processing and querying textual data, basic retrieval models, algorithms and information retrieval system implementations. Covers advanced topics in intelligent information retrieval, including natural language processing techniques, smart web agents, and recommender systems.

Prerequisites:

CSCE 3110.

Credit Hours: 3

4210 - GAME PROGRAMMING I

Introduction to game programming, including real-time, event-driven, and multimedia programming techniques. Graphics, sound and input programming. Students learn how to program a billboard game in 3-D with constrained camera motion.

Prerequisites:

CSCE 2100

Credit Hours: 3

Textbook:

none required

Course Coordinator: Ian Parberry

Course Outcomes:
  1. Be familiar with Windows programming.
  2. Be able to use Visual C++.
  3. Be able to use the Microsoft Direct3D SDK.
  4. Be able to program a 3D billboard game.
  5. Be able to work in a team with other programmers using version control.
  6. Be able to code one or more aspects of a game, including graphics, sound, and gameplay.
4215 - PROGRAMMING MATH AND PHYSICS FOR GAMES

Fundamentals of game math and physics for game development, including linear algebra, matrix math for graphics, quaternions, basic physics equations, game math and physics implementation, physics engines.

Prerequisites:

CSCE 2100, MATH 2700, PHYS 1710/PHYS 1730

Credit Hours: 3

Textbook:

Introduction to Game Physics with Box2D, 2013, Ian Parberry, ISBN 9781466565760

Course Coordinator: Ian Parberry

Course Outcomes:
  1. Demonstrate knowledge of linear algebra applied to computer games and graphics.
  2. Demonstrate knowledge of geometry applied to computer games and graphics.
  3. Demonstrate a basic understanding of mechanics sufficient to understand and solve problems involving bodies in motion.
  4. Construct discrete implementations from continuous mathematical models demonstrating knowledge of numerical methods and programming paradigms.
  5. Demonstrate competency in the writing and testing of math and physics-related code for computer games.
4220 - GAME PROGRAMMING II

Game engine programming techniques, including real-time 3D graphics programming, shader techniques, terrain rendering, level of detail, collision detection, particle engines, 3D sound and character animation.

Prerequisites:

CSCE 4210, CSCE 4215

Credit Hours: 3

Textbook:

Introduction to Game Physics with Box2D, 2013, Ian Parberry, ISBN 9781466565760

Course Coordinator: Ian Parberry

Course Outcomes:
  1. Knowledge of the basic techniques of 3D game programming.
  2. Experience working with a commercial grade game engine.
  3. Ability to program a 3D game.
  4. Ability to use more than one revision control system.
  5. Experience with programming using a very large code base.
4230 - INTRODUCTION TO COMPUTER GRAPHICS

Basic Euclidian geometry and linear algebra, computer graphics algorithms and data structures, OpenGL and its inner workings.

Prerequisites:

CSCE 2100, CSCE 2110, MATH 2700

Credit Hours: 3

Textbook:

OpenGL Programming Guide, Dave Shreiner, Graham Sellers, John Kessenich, Bill Licea-Kane, 2013, Addison Wesley, ISBN 9780321773036; Computer Graphics with OpenGL, Donald Hearn, Pauline Baker, Warren Carithers, 2010, Prentice Hall, ISBN 9780136053583

Course Coordinator: Robert Renka

Course Outcomes:
  1. Analyze, modify and implement existing computer graphics algorithms.
  2. Design and implement new computer graphics algorithms that are effective and efficient.
  3. Develop and apply knowledge of computer graphics hardware effectively in the design and implementation of graphics algorithms.
  4. Create computer graphics applications using standard graphics libraries and products, including OpenGL.
  5. Use basic matrix and vector operations and related concepts from linear algebra in the design and development of graphics algorithms and applications.
4240 - INTRODUCTION TO DIGITAL IMAGE PROCESSING

Covers fundamental knowledge of digital image processing techniques, including image formation, filtering and image enhancement, restoration, region and edge segmentation, and image coding.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Digital Image Processing, 3rd edition by Gonzalez and Woods, ISBN 9780131687288

Course Coordinator: Xiaohui Yuan

Course Outcomes:
  1. Demonstrate understanding of the basic concepts of image acquisition, sampling, and quantization.
  2. Demonstrate understanding of the color spaces and color transformation.
  3. Demonstrate understanding of spatial and frequency filtering techniques.
  4. Demonstrate understanding of the fundamental image enhancement algorithms such as histogram modification and edge detection.
  5. Develop writing and presentation skills to communicate digital image processing related topics.
4250 - TOPICS IN GAME DEVELOPMENT

Advanced topics in game development, possibly including but not limited to character animation, procedural content generation, shader techniques and graphics special effects. Discussion of articles from the recent academic and technical literature on game development and related material from relevant computer science areas.

Prerequisites:

CSCE 4210. Corequisite: CSCE 4220.

Credit Hours: 3

Textbook:

No textbooks required

Course Coordinator: Ian Parberry

Course Outcomes:
  1. Ability to perform a literature search for academic game development articles.
  2. Ability to formulate a game development related project using forward-looking academic articles.
  3. Ability to devise metrics for measuring the viability of a game development related project.
  4. Experience with writing code for and evaluating those metrics.
  5. Experience with interpreting and pitching the results to a game development team.
4290 - INTRODUCTION TO NATURAL LANGUAGE PROCESSING

Introduction to natural language processing, modern theories of syntax, context free parsing, transformational syntax and parsing, computational semantics, and survey of natural language processing systems.

Prerequisites:

CSCE 3110

Credit Hours: 3

Course Coordinator: Eduardo Blanco

4310 - INTRODUCTION TO ARTIFICIAL INTELLIGENCE

Introduction to concepts and ideas in artificial intelligence. Topics include search techniques, knowledge representation, control strategies and advanced problem-solving architecture.

Prerequisites:

CSCE 3210

Credit Hours: 3

Textbook:

Artificial Intelligence, A Modern Approach, Stuart Russell, Peter Norvig, 2009, ISBN 9780136042594

Course Coordinator: Kathleen Swigger

Course Outcomes:
  1. Use and create programs that demonstrate understanding of search algorithms: depth first, breadth first, A*, Hill-climbing.
  2. Implement programs that demonstrate understanding of two-person games.
  3. Demonstrate understanding of knowledge-based systems.
  4. Demonstrate basic principles of computing different machine learning algorithms.
  5. Use and create programs that show understanding of machine learning techniques (decision trees).
4350 - INTRODUCTION TO DATABASE SYSTEMS DESIGN

Logical and physical database system organization, logical models, design issues, secondary storage considerations.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Database System Concepts, Abraham Silberschatz, Henry Korth, S. Sudarshan, 2010, ISBN 9780073523323

Course Coordinator: JungHwan Oh

Course Outcomes:
  1. Analyze a problem to determine its data requirements.
  2. Create a database that satisfies the given data requirements.
  3. Store, maintain and access data in a database using SQL.
  4. Understand and demonstrate how B+-tree and hashing speed data access.
  5. Understand and use the theory of functional dependencies for DB design.
4355 - DATABASE ADMINISTRATION

Database administration skills covering installation, configuration and tuning a database, administering servers and server groups, managing and optimizing schemas, tables, indexes, and views, creating logins, configuring permissions, assigning roles and performing other essential security tasks, backup and recovery strategies, automation and maintenance.

Prerequisites:

CSCE 4350

Credit Hours: 3

Textbook:

Database System Concepts, 6th Edition, Silberschatz, McGraw-Hill, ISBN 97800733523323

Course Coordinator: Ryan Garlick

Course Outcomes:

1. Install, configure and tune a database.

2. Maintain and administer servers and server groups.

3. Manage and optimize schemas, tables, indexes and views.

4. Create logins, configure permissions, assign roles and perform essential security tasks.

5. Provide adequate backup and recovery strategies and maintenance.

6. Develop scripts to automate much of the data administration necessary.

4430 - PROGRAMMING LANGUAGES

Formal definition of programming languages including specification of syntax and semantics. Comparison of several existing high-level languages.

Prerequisites:

CSCE 2110

Credit Hours: 3

Textbook:

Required: Programming Languages, 2nd edition, Tucker, McGraw-Hill, ISBN 9780072866094; Optional: Art of Prolog, 2nd edition, Sterling, MIT, ISBN 9780262691635; Java for Students with Concepts of Programming Lanuguages, 10th Edition, Sebesta, Pearson, ISBN 9780131395312

Course Coordinator: Paul Tarau

Course Outcomes:
  1. Understand the concepts of programming languages, with emphasis on programming paradigms and language processors.
  2. Have a practical understanding of commonalties and differences between major programming paradigms.
  3. Understand the key object oriented, logic and functional programming concepts.
  4. Understand the key concepts of event driven and concurrent programming.
  5. Understand the use and implementation of modern programming language concepts like recursion, inheritance, reflection, unification, backtracking, type inference, infinite data objects, and threads.
  6. Have some familiarity with domain-specific languages with emphasis on Internet programming languages.
4440 - REAL-TIME SOFTWARE DEVELOPMENT

Specification of real-time system requirements, timing, synchronization and fault-tolerance issues, construction and validation of real-time software. Mathematical formalisms, design and analyses using real-time UML are also emphasized.

Prerequisites:

CSCE 3612

Credit Hours: 3

Textbook:

Required: Real Time UML Workshop for Embedded Systems, Douglass, Newnes, ISBN 9780750679060, Optional: Real Time UML, 3rd edition, Douglass, Addison Wesley, ISBN 9780321160768.

Course Coordinator: Song Fu

Course Outcomes:
  1. Demonstrate an understanding of the characteristics of real-time systems and the key issues and challenges in the design of real-time software, including meeting deadlines, execution predictability, space and energy limitations.
  2. Apply the development methodology for real-time systems and compute the trade offs between hard and soft real-time systems.
  3. Demonstrate the use of the real-time UML in modeling a real-time software system.
  4. Gain experience with schedule validation techniques and how these techniques differ between hard and soft deadlines in real-time systems.
  5. Evaluate the timing, synchronization and fault tolerance issues of real-time software development.
4444 - SOFTWARE ENGINEERING

Modular design and implementation of software systems. Topics include requirements and specifications development, documentation of the design using current design tools such as UML, testing of software implementation, and system and user documentation.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Software Engineering: A Practitioner's Approach, 8th edition, Pressman, Maxim, McGraw Hill, ISBN 9780078022128

Course Coordinator: Renee Bryce

Course Outcomes:

1. Use UML for design, such as use cases and class diagrams.

2. Conduct software testing, such as validation, integration, and unit testing.

3. Conduct usability testing, such as heuristic evaluations.

4. Participate in peer reviews such as code inspections.

5. Communicate software product and process results in oral and written form.

4460 - SOFTWARE TESTING AND EMPIRICAL METHODOLOGIES

Addresses recent advances in the field of software testing, including empirical methodologies that provide a systematic way to investigate various software engineering techniques and methodologies. Students learn various fundamental testing techniques and the state of the art in testing techniques, and understand how to design, conduct, analyze, and write up empirical studies of software engineering technologies.

Prerequisites:

CSCE 2110.

Credit Hours: 3

4510 - INTRODUCTION TO WIRELESS COMMUNICATIONS

Fundamentals of wireless communications and networking, with emphasis on first, second, and third generation cellular systems and satellite communication. Topics include point-to-point signal transmission through a wireless channel, cellular capacity, multi-user transmissions, and mobility management.

Prerequisites:

CSCE 2610

Credit Hours: 3

Textbook:

Wireless Communications & Networks, William Stallings, 2004, ISBN 9780131918351

Course Coordinator: Robert Akl

Course Outcomes:

1.      Calculate path loss, bit error rate and channel capacity in various wireless channel conditions.

2.      Model various analog and digital modulation techniques mathematically as well as demonstrate their applications.

3.      Describe advanced multiplexing techniques such as spread spectrum and OFDMA including their advantages, disadvantages and applications.

4.      Design channel coding schemes for error control.

5.      Describe the architecture and physical and MAC layers of Wireless LANs, Wireless PANs and cellular networks including 4G and LTE.

4520 - WIRELESS NETWORKS AND PROTOCOLS

Architecture and elements of a wireless network. Use and process of mobility management. Signaling schemes used in wireless networks, network signaling, protocols and standards (GSM, IS-95, WAP, MobileIP, GPRS, UMTSand CDMA2000). Analyze the operation and performance of wireless protocols.

Prerequisites:

CSCE 3600

Credit Hours: 3

Textbook:

No textbook required

Course Coordinator: Ram Dantu

Course Outcomes:

1. Basic operation of a cellular network.

2. Understanding basic operation of different network elements of a cellular network.

3. Basic understanding of soft and hard handoff.

4. Basic understanding of function of interfaces between BTS, BSC, MSC and PSTN.

5. Understanding basic issues related to supporting QoS in voice and data services in cellular networks.

6. Understanding the basic operation of 4G networks and interworking of wireless and wireline networks.

 

4530 - COMPUTER NETWORK DESIGN

Fundamental concepts, requirements and design tradeoffs, particularly as related to scheduling, congestion control, routing, and traffic management. Wireless access, mobility (including WLAN), VoIP and applications. Firewalls, NATs, VPN, high availability and optical rings.

Prerequisites:

CSCE 3530

Credit Hours: 3

Course Coordinator: Ram Dantu

4540 - TCP/IP PROTOCOLS

Investigation of the TCP/IP protocol suite, components, and interaction with operating systems. Topics include special protocols, routing protocols, MobileIP, as well as some applications: FTP, TELNET, SMTP, DHCP, HTTP, DNS, etc.

Prerequisites:

CSCE 3530

Credit Hours: 3

Course Coordinator: Ram Dantu

4550 - INTRODUCTION TO COMPUTER SECURITY

Security goals, threats and vulnerabilities. Cryptography, program security and operating system security issues. Basic network security. Planning, policies and risk analysis.

Prerequisites:

CSCE 3600

Credit Hours: 3

Textbook:

Security in Computing, Charles Pfleeger, Shari Pfleeger, 2006, ISBN 9780132390774

Course Coordinator: Hassan Takabi

Course Outcomes:
  1. Understand common security terminology, threats, vulnerabilities, and security design principles (principle of least privilege, etc.)
  2. Understand basic cryptography concepts, and specific commonly used algorithms and protocols.
  3. Understand common program vulnerabilities, and secure programming techniques.
  4. Understand formal security models, including Bell-LaPadula (MLS), Biba, and Chinese Wall security.
  5. Understand basic network security issues and controls.
  6. Understand administrative issues in security, such as planning, security policies, and risk analysis.
  7. Obtain hands-on experience in using common security tools, such as firewalls, intrusion detection systems, and port scanning software.
4560 - SECURE ELECTRONIC COMMERCE

Electronic commerce technology, models and issues, with emphasis on security issues. Supporting technology such as cryptography, digital signatures, certifiticates and public key infrastructure (PKI), Security-conscious programming for web-based applications. Exposure to interaction between technical issues and business, legal and ethical issues.

Prerequisites:

CSCE 2100 and CSCE 2110

Credit Hours: 3

Textbook:

Lecture Notes, Slides and Online Resources. http://www.cse.unt.edu/~garlick/

Course Coordinator: Ryan Garlick

Course Outcomes:
  1. Knowledge of and experience with secure web development, with exposure to at least three current technologies (such as XML, Perl, PHP, ASP, JSP, JavaScript, etc.)
  2. Knowledge of how cryptography can be used to support confidentiality and integrity of electronic transmissions and transactions.
  3. Knowledge of electronic transaction and payment systems.
  4. Knowledge of Public Key Infrastructure (PKI) settings and trust models, with specific systems such as X.509 certificates and PGP\\'s decentralized web of trust.
  5. Familiarity with basic network and system security, and the ability to set up a typical electronic commerce setting of networks and hosts.
  6. Familiarity with business, legal, and ethical issues related to electronic commerce, and the interaction of these issues with technical issues.
4600 - INTRODUCTION TO OPERATING SYSTEMS

Concepts in operating system analysis and design. General topics of process, resource and file management are presented and analyzed in the context of different system architectures and performance constraints.

Prerequisites:

CSCE 3600

Credit Hours: 3

Textbook:

Operating System Concepts Essentials, Abraham Silberschatz, Peter Galvin, Greg Gagne, 2010, ISBN 9780470889206

Course Coordinator: Armin Mikler

Course Outcomes:
  1. Use the principles of processes and threads for abstraction of real-world events.
  2. Formulate solutions for mutual exclusion and process synchronization.
  3. Understand the concept of deadlock to develop deadlock free systems of processes.
  4. Understand principles of memory and resource management.
  5. Identify different process scheduling paradigms and utilize them in system development.
  6. Develop fundamental security features to protect systems and data.
4610 - COMPUTER ARCHITECTURE

Study of performance issues and power requirements related to modern computer systems, including Instruction Level Parallelism, out-of-order instruction scheduling, branch prediction, speculative execution, cache memory, and concurrency.

Prerequisites:

CSCE 3610; CSCE 3612.

Credit Hours: 3

Textbook:

Computer Architecture w/CD, 5th edition, Hennessy, Morgan Kaufmann Publishers, ISBN 9780123838728

Course Coordinator: Krishna Kavi

Course Outcomes:
  1. Apply metrics to evaluate performance and power requirements of modern computer systems. Represent performance using arithmetic, harmonic and geometric means.
  2. Understand Amdahl’s law as applied to a single core and multicore systems.
  3. Design a pipelined processor to meet design specifications.
  4. Design an out-of-order and speculative processor to improve performance.
  5. Understand cache memory performance issues.
  6. Understand cache memory issues in multicore systems include cache coherency management.
  7. Understand hardware support for concurrency including multithreading, locks and barriers.
4620 - REAL-TIME OPERATING SYSTEMS

Basic real-time operating systems concepts and services, including interrupt processing, process and thread models, real-time software architectures and development environments. Detailed study of the design and implementation of real-time applications using real-time operating systems. Focus on commercial real-time operating systems/development environments, including vxWorks, RTOS and pOSEK/pOSEKSystem.

Prerequisites:

CSCE 3612.

Credit Hours: 3

Textbook:

Real Time Concepts for Embedded Systems, 2nd Edition, Li, Elsev, ISBN 9781578201242

Course Coordinator: Song Fu

Course Outcomes:
  1. Understand the differences between general purpose and real-time operating systems.
  2. Understand multithreading in real-time environment.
  3. Understand task and thread scheduling in real-time operating systems.
  4. Understand memory management in real-time systems.
  5. Be able to program using system proved timers, signals, mutual exclusion, semaphores, message queues and exception handlers.
  6. Be able to program real-time applications to run in a realistic operating environment.
4650 - INTRODUCTION TO COMPILATION TECHNIQUES

Topics include parsing, syntax-directed translation, run-time storage management, error recovery, code generation and optimization. A significant project is required.

Prerequisites:

CSCE 2100, CSCE 2110 and CSCE 3600

Credit Hours: 3

Textbook:

Compilers, Principles, Techniques and Tools, 2nd Edition, Aho, Addison Wesley, ISBN 9780321486813

Course Coordinator: Phil Sweany

Course Outcomes:
  1. Given a context-free grammar, build SLR(1), LR(1) and LALR(1) parse tables for that grammar.
  2. Given a context-free grammar, an LR parse table and an input string, show the steps of the parse.
  3. Given a language specification for an imperative language, build a parser for the language using tools such as lex and yacc.
  4. Integrate semantic actions into the above parser to construct a symbol table, perform type checking, and generate intermediate code.
  5. Given a control-flow graph with intermediate 3-address code within each basic block, show the improved control-flow graph after hand-optimizing for common subexpression elimination, copy propagation, and dead code removal.
4655 - PRINCIPLES OF COMPILER OPTIMIZATION

Design and implementation of modern methods of analysis and optimization within compilers for a variety of target architectures. Topics include intermediate representations, advanced code generation, control- and data-flow analysis, advanced compiler optimization, dynamic compilation, global register allocation and instruction scheduling.

Prerequisites:

CSCE 3600

Credit Hours: 3

Course Coordinator: Phil Sweany

Course Outcomes:
  1. Students will develop a good understanding of basic compiler analysis and optimization techniques.
  2. Students will sharpen their skills in comparing and evaluating different compiler techniques with the intent of choosing among several techniques for inclusion into a production compiler.
  3. Students will develop their skill in adding to existing software.
  4. Students will be able to design, implement and write about experimental compiler research in a professional manner.
  5. Students will develop skills in professional oral presentation of their work.
4730 - VLSI DESIGN

Introduction to VLSI design using CAD tools, CMOS logic, switch level modeling, circuit characterization, logic design in CMOS, systems design methods, test subsystem design, design examples, student design project. 

Prerequisites:

CSCE 2100, ENGR 2720 and ENGR 2730

Credit Hours: 3

Textbook:

Required: CMOS VLSI Design: A Circuits and Systems Perspective, Neil Weste, David Harris, 2010, ISBN 9780321547743, Recommended:Nanoelectronic Mixed-Signal System Design, Saraju Mohanty, 2015, ISBN 9780071825719

Course Coordinator: Saraju Mohanty

Course Outcomes:
  1. Understand the concept of MOS transistor.
  2. Understand the operational characteristics of MOS transistor.
  3. Understand the Power dissipation mechanisms in MOS transistor.
  4. Understand the transistor-level realization of Boolean functions.
  5. Able to use CAD tools to design and simulate digital circuits.
4750 - VLSI TESTING

Advanced experience with CAD tools for VLSI design, IC testing. Design Project from CSCE 4730 to be fabricated and tested. Implementation and verification of test programs, IC testing and troubleshooting, legal, economic, and ethical design issues. Oral presentations and written reports are required.

Prerequisites:

CSCE 4730

Credit Hours: 3

Course Coordinator: Saraju Mohanty

4810 - BIOCOMPUTING

Introduction to computation problems inspired by the life sciences and overview of available tools. Methods to compute sequence alignments, regulatory motifs, phylogenetic trees and restriction maps. (Same as BIOL 4810, taught with CSCE 5810.)

Prerequisites:

CSCE 3850 or junior or senior standing

Credit Hours: 3

Textbook:

Required: Intro to Bioinformatics Algorithms, Jones, MIT, ISBN 9780262101066; Recommended: Beginning Perl for Bioinformatics, Tisdall, O'Reilly, ISBN 9780596000806

Course Coordinator: Armin Mikler

Course Outcomes:
  1. Learn the principles of Molecular Biology and Genetics
  2. Understand the concepts of DNA structure and encoding
  3. Understand the Central Dogma of Biology (DNA->RNA->Protein)
  4. Understand the importance of Bioethics
  5. Learn basic Perl programming
  6. Understand computational complexity of Bioinformatics problems
  7. Learn fundamental computational tasks/algorithms of Bioinformatics
  8. Learn about NCBI and available Bioinformatics tools
4820 - COMPUTATIONAL EPIDEMIOLOGY

Application of computation methods to problems in fields of public health. Design and implementation of disease outbreak models. (Same as BIOL 4820 and GEOG 4900, taught with CSCE 5820.)

Prerequisites:

CSCE 3850 or junior/senior standing

Credit Hours: 3

Textbook:

Required: An Introduction To Epidemiology, Ray Merrill, 2013, ISBN 9781449665487, Recommended: Infectious Diseases of Humans: Dynamics and Control, Roy Anderson, Robert May, 1992, ISBN 9780198540403

Course Coordinator: Armin Mikler

Course Outcomes:
  1. Understand the interdisciplinary nature of Computational Epidemiology.
  2. Understand the principles of Epidemiology and its challenges to identify the cause of outbreaks.
  3. Understand the fundamentals of mathematical outbreak models and their interpretation.
  4. Understand the basics of computational modeling and simulation.
  5. Learn the fundamental study designs in epidemiology.
  6. Understand the difficulties of communicating among researchers in an interdisciplinary setting.
  7. Learn to present Public Health related information and study results.
4890 - DIRECTED STUDY

Study by individuals or small groups if faculty supervisor agrees. A plan of study approved by the faculty supervisor along with the study will be graded by the faculty supervisor must be approved by the Coordinator for Undergraduate Studies.

Prerequisites:

Junior or Senior level standing in Computer Science, Computer Engineering, or Information Technology, and consent of instructor

4901 - SOFTWARE DEVELOPMENT CAPSTONE

Students demonstrate their mastery of the breadth of Computer Science learned in their studies. Focus is on the application of computer science techniques to the design of applications involving multiple software components. Students apply the theory acquired from numerous computer science courses to solve real-world design and development problems. The design will consider realistic constraints including economic, environmental, critical thinking, technical writing and communications skills, and group management skills in completing their design and development project.

Prerequisites:

CSCE 4110, CSCE 4444 and TECM 2700

Credit Hours: 3

Course Outcomes:
  1. Gather and refine user functional requirements and other functional and non-functional requirements and constraints for a large scale software system and create a software requirements specification document.
  2. Perform software analysis and design tasks using recognized software methods to create a preliminary design specification for software based on a requirements specification.
  3. Utilize project management principles, skills and tools in creating the requirements and preliminary design specifications.
  4. Create a project management plan, including a schedule and budget for a large scale software project.
  5. Utilize configuration management, project management and design tools in the course of the project.
4905 - INFORMATION TECHNOLOGY CAPSTONE I

First of a two course sequence in which students develop a complex IT 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, prepare a variety of deliverable documents, and finally deliver the finished product to the customer. The first course will focus on the analysis and design of the system.

Prerequisites:

CSCE 3055

Credit Hours: 3

Course Coordinator: David Keathly

Course Outcomes:
  1. Gather and refine user functional requirements and other functional and non-functional requirements and constraints for a large scale information system, and create a system requirements specification document.
  2. Perform system analysis and design tasks using recognized software engineering methods to create a preliminary design specification for a system based on a requirements specification.
  3. Utilize software project management principles, skills and tools in creating the requirements and preliminary design specifications.
  4. Create a project management plan, including a schedule and budget for a large scale information systems project.
  5. Utilize configuration management, project management and design tools in the course of the project.
  6. Understand the classification and characteristics of large computing systems.
  7. Demonstrate the ability to perform common systems installation, integration, maintenance, and administration tasks.
4910 - COMPUTER ENGINEERING DESIGN I

First course in the senior capstone design sequence. Focus is the application of techniques to the design of electronic systems that have digital hardware and software components. Students apply the theory acquired from numerous engineering courses to solve real-world design problems. The design will consider realistic constraints including economic, environmental, sustainability, manufacturability, ethical, social, safety.

Prerequisites:

CSCE 3612 and EENG 3510 and appropriate area electives

Credit Hours: 3

Textbook:

no textbook required

Course Coordinator: David Keathly

Course Outcomes:
  1. Gather and refine user functional requirements and other functional and non-functional requirements and constraints for a large scale processor-based system and create a system requirements specification document.
  2. Perform system analysis and design tasks using recognized software and systems engineering methods to create a preliminary design specification for a system based on a requirements specification.
  3. Utilize project management principles, skills and tools in creating the requirements and preliminary design specifications.
  4. Create a project management plan, including a schedule and budget for a large scale information systems project.
  5. Utilize configuration management, project management and design tools in the course of the project.
4915 - COMPUTER ENGINEERING DESIGN II

Second course in the senior capstone design sequence. Focus is the application of techniques to the design of electronic systems that have digital hardware and software components. Students apply the theory acquired from numerous engineering courses to solve real-world design problems. The design will consider realistic constraints including economic, environmental, sustainability, manufacturability, ethical, social, safety.

Prerequisites:

CSCE 4910. CSCE 4915 must be completed in the long term/semester immediately following the completion of CSCE 4910.

Credit Hours: 3

Textbook:

no textbook required

Course Coordinator: David Keathly

Course Outcomes:
  1. Create a detailed systems design and implementation plan using standard engineering tools and methodology.
  2. Implement the design for a processor-based system.
  3. Create a test plan and series of test procedures for a project and execute the procedures against the components created.
  4. Create a delivery and maintenance plan for the system.
  5. Utilize configuration management, project management and design tools in the course of the project.
  6. Create a lifecycle plan for the system developed.
4920 - COOPERATIVE EDUCATION IN COMPUTER SCIENCE & ENGINEERING

Supervised field work in a job directly related to the student's major field of study or career objective. May be repeated for credit.

Prerequisites:

Junior or Senior standing in Computer Science, Computer Engineering or Information Technology and consent of department

4925 - INFORMATION TECHNOLOGY CAPSTONE II

Second of a two-course sequence in which students develop a complex IT System starting from customer requirements and progressing through the entire analysis, design, implementation, testing and delivery lifecycle. Students will work in teams to develop a project plan, complete the technical components of the project, prepare a variety of deliverable documents, and finally deliver the finished product to the customer. The second course focuses on the implementation, testing and delivery of the system.

Prerequisites:

CSCE 4905. CSCE 4925 must be completed in the long term/semester immediately following the completion of CSCE 4905. 

Credit Hours: 3

Course Coordinator: David Keathly

Course Outcomes:

1. Create a detailed systems design and implementation plan using standard software engineering tools and methodology.

2. Implement the design for a large scale information system.

3. Create a test plan and series of test procedures for a project and execute the procedures against the components created.

4. Create a delivery and maintenance plan for a large scale information system.

5. Utilize configuration management, project management and design tools in the course of the project.

6. Create a lifecycle plan for the information system developed.

7. Understand the classification and characteristics of large computing systems.

8. Demonstrate the ability to perform common systems installation, integration, maintenance, and administration tasks.

9. Demonstrate the ability to plan and execute the deployment of an IT system or components into a client environment.

4930 - TOPICS IN COMPUTER SCIENCE & ENGINEERING

Topics vary. May be repeated for credit.

Prerequisites:

Junior or Senior standing in Computer Science, Computer Engineering or Information Technology and consent of instructor

Credit Hours: 3

4940 - SPECIAL COMPUTER APPLICATION PROBLEM

Study defined by the student in applying computer science to another field. Work supervised and work plan approved by one faculty member from computer science and one from relevant application area, one to three students may work together if all faculty advisers concerned agree. Open to advanced undergraduate students capable of developing problems independently. May be repeated for credit.

Prerequisites:

Prior approval of plan by faculty supervisor.  Open to advanced undergraduate students capable of developing problems independently.  May be repeated for credit.

4950 - SPECIAL PROBLEMS IN COMPUTER SCIENCE & ENGINEERING

Prior approval of plan of study by faculty supervisor.

Prerequisites:

Junior or Senior standing in Computer Science, Computer Engineering or Information Technology and consent of instructor

4951 - HONORS COLLEGE CAPSTONE THESIS

Major research project prepared by the student under the supervision of a faculty member and presented in standard thesis format. An oral defense is required of each student for successful completion of the thesis. May be substituted for HNRS 4000.

Prerequisites:

Completion of at least 6 hours in honors courses, completion of at least 12 hours in the major department which the thesis is prepared, approval of the department chair and the dean of the school or college in which the thesis is prepared, approval of the dean of the Honors College

Credit Hours: 3

4999 - SENIOR THESIS

Intended to be a serious exercise in the organization and presentation of written material. Students select their own topics in consultation with their faculty advisor. The thesis is a research paper and students are responsible, with the advice of their faculty, for the investigation of sources, the accumulation of data, the selection of pertinent material, and the preparation of the thesis in acceptable form. Students must submit their own topics for thesis, with designated advisor approval, before they are allowed to register for the course.

Prerequisites:

Senior standing

Credit Hours: 3

Course Outcomes:
  1. Good time management skills, by meeting each deadline for the thesis.
  2. Ability to organize a complete significant written paper both in a manner appropriate to the topic, and to meet accepted standards of academic writing.
  3. An ability to work with and take direction from the faculty member acting as advisor on the project.
  4. Synthesis techniques to place existing work in the context of their thesis.
  5. The expository writing skills necessary to create a well-written thesis that targets the intended audience.