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:

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

    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:

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

    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:

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

    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:

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

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

    Credit Hours: 3
    Coordinator: Krishna Kavi
    Prerequisites:

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

    Textbook:

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

    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
    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 & Systems, 2nd edition, Roberts, McGraw-Hill, ISBN 9780073380681

    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 & Systems, 2nd 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

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

    Credit Hours: 3
    Prerequisites:

    CSCE 2100

    Textbook:

    Class handouts and online references

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

Pages