Undergraduate Courses

  • 1010 - DISCOVERY COMPUTER SCIENCE (NON-MAJORS)

    A breadth-first introduction to computer science based upon 7 “Big Ideas,” namely: 1) computing is a creative activity, 2) abstraction reduces information and detail to facilititate focus on relevant concepts, 2) data and information facilitate the creation of knowledge, 4) algorithms are used to develop and express solutions to computational problems, 5) programming enables problem solving, human expression and creation of knowledge, 6) the internet pervades modern computing and 7) computing has global impacts.

    Credit Hours: 3
    Coordinator: David Keathly
    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 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.

    Credit Hours: 4
    Prerequisites:

    High school algebra or equivalent

    Textbook:

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

    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.

    Credit Hours: 4
    Coordinator: David Keathly
    Prerequisites:

    MATH 1650 with a grade of C or better

    Textbook:

    Zybooks: https://learn.zybooks.com/signin code is available at semester start

    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.

    Credit Hours: 3
    Coordinator: David Keathly
    Prerequisites:

    CSCE 1030, Corequisite: MATH 1710

    Textbook:

    Zybooks: https://zybooks.zyante.com/#/signin; code is available at semester start

    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.

    Credit Hours: 3
    Coordinator: Ian Parberry
    Prerequisites:

    CSCE 1040; Corequisite: CSCE 2110

    Textbook:

    Zybooks: https://zybooks.zyante.com/#/signin; code is available at semester start

    Course Outcomes:
    1. Demonstrate a solid foundation in conceptual and formal models by describing loop structures in summation and/or product notation.
    2. Use abstraction in the design and implementation of algorithms.
    3. Design programming solutions to “simple” problems and implement those designs in C or C++.
    4. Apply big-Oh notation to evaluate and compare algorithms and programs.
    5. Use combinatorics and conditional probability in solving real-world problems.
    6. Define the basic operations of sets, functions, relations, trees and graphs.
    7. Demonstrate an introductory knowledge of formal languages by using regular expressions, deterministic finite automata and non-deterministic finite automata to describe patterns in strings.
  • 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.

    Credit Hours: 3
    Coordinator: Ian Parberry
    Prerequisites:

    CSCE 1040; Corequisite: CSCE 2100

    Textbook:

    Zybooks: https://zybooks.zyante.com/#/signin; code is available at semester start

    Course Outcomes:
    1. Use of graph data structures in design of software.
    2. Use of table data structures in design of software.
    3. Use of set data structures in design of software.
    4. Use of C++ classes to implement graphs, sets and relational data structures.
    5. Use of context-free grammars to describe patterns.
    6. The ability to describe assertions in propositional logic form.
    7. Use of amortized analysis to evaluate efficiency of data structure such as splay trees and O(1) expansion of tables.
  • 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.

    Credit Hours: 3
    Coordinator: Krishna Kavi
    Prerequisites:

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

    Textbook:

    Computer Organization and Design: ARM Edition; Kaufmann, Elsevier Publishing. ISBN 9780128017333

    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.

    Credit Hours: 3
    Coordinator: Stephanie Ludi
    Prerequisites:

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

  • 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.

    Credit Hours: 3
    Coordinator: Robert Akl
    Prerequisites:

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

    Textbook:

    Signals and Systems, 3rd Edition; Roberts, McGraw-Hill.     ISBN 9780078028120

    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.

    Credit Hours: 3
    Coordinator: Robert Akl
    Prerequisites:

    CSCE 3010

    Textbook:

    Signals and Systems, 3rd Edition; Roberts, McGraw-Hill.     ISBN 9780073380681

    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.

    Credit Hours: 3
    Coordinator: Paul Tarau
    Prerequisites:

    CSCE 2100

    Textbook:

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

    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.

    Credit Hours: 3
    Coordinator: David Keathly
    Prerequisites:

    CSCE 2100

    Textbook:

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

    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.

    Credit Hours: 3
    Coordinator: Farhad Shahrokhi
    Prerequisites:

    CSCE 2100 and CSCE 2110

    Textbook:

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

    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.

    Credit Hours: 3
    Prerequisites:

    CSCE 2100 and CSCE 2110

    Textbook:

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

    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.

    Credit Hours: 3
    Coordinator: Stephanie Ludi
    Prerequisites:

    CSCE 2100 and CSCE 2110

    Textbook:

    100 Things Every Designer Needs; Weinschenk, Pearson.     ISBN 9780321767530     

    Don't make me Think! Revisited; Krug, Pearson                       ISBN 9780321965516

    Course Outcomes:

    1. Demonstrate knowledge of the contemporary best practices for user interface design.

    2. Perform the different phases of the interface design process.

    3. Demonstrate knowledge of user modeling and show how these models affect the design of an interface. 

    4. Demonstrate that they can design and develop a computer-user interface using appropriate techniques.

    5. 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.

    Credit Hours: 3
    Coordinator: David Keathly
    Prerequisites:

    CSCE 2100

    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.

    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.

    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.

    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.

    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.

    Credit Hours: 3
    Coordinator: Ryan Garlick
    Prerequisites:

    CSCE 2100 and CSCE 2110

    Textbook:

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

    Course Outcomes:
    1. Demonstrate knowledge of Internet structure and basic protocols, with an emphasis on the client-server paradigm.
    2. Demonstrate knowledge of and proficiency in basic techniques for web-based design.
    3. Demonstrate knowledge of programming techniques for a web application.
    4. Demonstrate knowledge of collecting and processing information obtained through an Internet application, including integration with data storage.
    5. Develop web-based interactive functionality to process user data on the server-side.
  • 3444 - 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.

    Credit Hours: 3
    Coordinator: Renee Bryce
    Prerequisites:

    CSCE 3110

    Textbook:

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

    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.
  • 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.

    Credit Hours: 3
    Coordinator: Ram Dantu
    Prerequisites:

    CSCE 3600

Pages