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.
  • 1035 - Computer Programming I

    Overview of computers and programming. Focus is on problem analysis and techniques used in the development of algorithms and computer programs using a modern programming language. Topics include data types, expressions, statements, and operators, input/output, conditional statements, iteration, functions, lists, and debugging. No prior knowledge of programming is assumed.

    Credit Hours: 4
    Prerequisites:

    MATH 1650

  • 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.
  • 1045 - Computer Programming II

    Continues the progression of students’ software development skills through programming, designing, and implementing larger software projects and emphasizes more advanced topics such as dynamic data structures and object-oriented paradigms using one or more modern programming languages.

    Credit Hours: 3
    Prerequisites:

    CSCE 1035

  • 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.
  • 3201 - Applied Artificial Intelligence

    Core concepts and terminology in artificial intelligence will be introduced to understand the taxonomy of AI applications - the relationships between the tools and frameworks available for intelligent, data-driven decision making. This will include a demo-driven introduction to machine learning, with general principles of powerful predictive models discussed and the role of unsupervised and semi-supervised learning techniques in powering many state-of-the-art decision systems.

    Credit Hours: 3
    Prerequisites:

    MATH 1650

    This course is for non-computer science and engineering majors.

    Experience with Python is helpful as it is used extensively in the course, but significant prior programming experience with any language will be sufficient.

  • 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.
  • 3214 - Software Development for Artificial Intelligence

    New paradigms for developing software are needed to create and manage systems with AI capabilities, particularly for practitioners without extensive programming experience. Students in this course will be taught how to leverage available artificial intelligence APIs flexibly and reliably through a series of demo-driven tasks. Additionally, as data management is integral to AI system development, an emphasis will be made to collect and process data for AI system training and testing. Traditional programming concepts and software design principles will be covered in a task-oriented manner to interface with advanced AI libraries and frameworks in order to build and maintain AI infrastructure.

    Credit Hours: 3
    Prerequisites:

    MATH 1650

    This course is for non-computer science and engineering majors.

    Experience with Python is helpful as it is used extensively in the course, but significant prior programming experience with any language will be sufficient.

    Course Outcomes:

    1.Use a high-level programming language to build and evaluate different machine learning models.
    2. Manage data collection, visualizing, preprocessing, and partitioning for machine learning applications.
    3. Analyze problems and craft appropriate solutions using existing products, API’s and other tools in combination with custom development as required.
    4. Create graphical user interface (GUI) and web applications for AI.
    5. Store code’s history and collaborate with others using code repositories and other collaboration tools.
    6. Properly document, share and explain problem solutions to collaborators and potential clients.
  • 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.

Pages