Prereq: High school algebra; use of computing applications.
CSCE 101 is intended for non-CSCE majors who desire a deeper understanding of computers and the work of computer scientists. CSCE 101 is a course in the science of computation and is suitable for non-CSCE majors and prospective CSCE majors.
Introduction to problem solving with computers. Problem analysis and specification, algorithm development, program design, and implementation in a high-level programming environment. Hardware, software, software engineering, networks, and impacts of computing on society.
Will not count towards the requirements for a major or minor in computer science and computer engineering.
A variety of computer oriented exercises using many software tools is presented which supplement and are coordinated with the topics taught in CSCE 101. Students are exposed to programming, operating systems, simulation software, spreadsheets, database software, the Internet, etc. Applications software introduced in the context of tools to explore the computer science topics and as alternatives to traditional programming languages. Emphasis on learning by experiment, with a goal of developing problem solving skills. A major component is the study of a programming language-the choice of which may vary by course section.
Appropriate score on the CSE Placement Exam or CSCE101; MATH 103 or equivalent.
Recommended for students interested in data and information processing, such as library and database applications, online commerce, and bioinformatics. Credit may be earned in only one CSCE 155 course.
Introduction to computers and problem-solving with computers. Topics include problem solving methods, software development principles, computer programming, and computing in society.
Laboratories supplement the lecture material and give an opportunity to practice concepts.
Data structures, including linked lists, stacks, queues, and trees; algorithms, including searching, sorting, and recursion; programming language topics, including object-oriented programming; pointers, references, and memory management; design and implementation of a multilayer application with SQL database.
Honors: Computer Problem Solving Essentials LINKCrosslisted as RAIK 183H
Lecture 3, Recitation 1
Good standing in the University Honors Program; admission to the Jeffrey S. Raikes School of Computer Science and Management.
CSCE/RAIK 183 is the first course in the Jeffrey S. Raikes School of Computer Science and Management core. CSCE/RAIK 183 has programming laboratory activities.
Introduction to problem solving with computers. Problem analysis and specification, algorithm development, program design, and implementation. JAVA in a Windows platform.
Honors: Software Development Essentials LINKCrosslisted as RAIK 184H
Good standing in the University Honors Program; admission to the Jeffrey S. Raikes School of Computer Science and Management; and CSCE/RAIK 183H.
CSCE/RAIK 184H is the second course in the Jeffrey S. Raikes School of Computer Science and Management core.
Problem solving with computers. Problem analysis and specification, data structures, relational databases, algorithm development, and program design and implementation. Discrete mathematics topics, propositional and predicate logic, sets, relations, functions, and proof techniques. C++, SQL, Windows, Standard Template Library, and Software Development Principles.
Introduction to organization and structure of computer systems. Boolean logic, digital arithmetic, processor organization, machine language programming, input/output, memory organization, system support software, communication, and ethics.
Theoretical concepts with programming assignments.
Survey of elementary discrete mathematics. Elementary graph and tree theories, set theory, relations and functions, propositional and predicate logic, methods of proof, induction, recurrence relations, principles of counting, elementary combinatorics, and asymptotic notations.
Introduction to designing, interfacing, configuring, and programming embedded systems. Configure simple embedded microprocessor systems, control peripherals, write device drivers in a high-level language, set up embedded and real-time operating systems, and develop applications for embedded systems.
Honors: Foundations of Computer Science LINKCrosslisted as RAIK 283H
Good standing in the University Honors Program; admission to the Jeffrey S. Raikes School of Computer Science and Management; and CSCE/RAIK 184H.
CSCE/RAIK 283H is the third course in the Jeffrey S. Raikes School of Computer Science and Management core.
Advanced data structures and algorithms that solve common problems and standard approaches to solving new problems. Analysis and comparison of algorithms, asymptotic notation and proofs of correctness. Discrete mathematics. Induction and principles of counting and combinatorics as foundation for analysis.
Honors: Foundations of Computer Systems LINKCrosslisted as RAIK 284H
Lecture 4, Recitation 1
Good standing in the University Honors Program; admission to the Jeffrey S. Raikes School of Computer Science and Management; and CSCE/RAIK 283H.
CSCE/RAIK 284H is the fourth course in the Jeffrey S. Raikes School of Computer Science and Management core.
Introduction to fundamental organization and structure of computer systems. Boolean logic, data representation, processor organization, input/output, memory organization, system support software and communication.
Aspects of computers and computing for computer science and computer engineering majors and minors. Topics vary.
Honors: RAIK Design Studio I LINKCrosslisted as BSAD 301H, RAIK 301H
Lab, Lecture 3
Good standing in the University Honors Program or by invitation; admission to the Jeffrey S. Raikes School of Computer Science and Management; BSAD/RAIK 282H; and CSCE/RAIK 284H.
First semester of Jeffrey S. Raikes School of Computer Science and Management design studio sequence.
Application of Jeffrey S. Raikes School of Computer Science and Management core content in a team oriented, project management setting. Complete projects in consultation with private and public sector clients.
Theoretical concepts with programming assignments.
A review of algorithm analysis, asymptotic notation, and solving recurrence relations. Advanced data structures and their associated algorithms, heaps, priority queues, hash tables, trees, binary search trees, and graphs. Algorithmic techniques, divide and conquer, transform and conquer, space-time trade-offs, greedy algorithms, dynamic programming, randomization, and distributed algorithms. Introduction to computability and NP-completeness.
Good Standing in UNL Honors Program or by invitation; grades of 'P' or 'C' or better in CSCE 156/156H and 235/235H.
CSCE310H covers the same topics as CSCE310, but in greater depth. For course description, see CSCE310.
Data Structures and Algorithms for Informatics LINK
Lab 1, Lecture 3
Grade of “Pass” or “C” or better in CSCE155.
Students may not receive credit for both CSCE310 and 311. CSE majors must take CSCE 310.
An introduction to algorithms and data structures for informatics. Foundational coverage of algorithms includes both problems (such as indexing, searching, sorting, and pattern matching) and methods (such as greedy, divide-and-conquer, and dynamic programming). Foundational coverage of data structures includes lists, tables, relational databases, regular expressions, trees, graphs, and multidimensional arrays. The topics will be studied in the context of informatics applications.
List-processing, string-processing, and other types of high-level programming languages. Fundamental concepts of data types, control structures, operations, and programming environments of various programming languages. Analysis, formal specification, and comparison of language features.
Combinational and sequential logic circuits. MSI chips, programmable logic devices (PAL, ROM, PLA) used to design combinational and sequential circuits. CAD tools. LSI and PLD components and their use. Hardware design experience.
Design and implementation of operating system kernels. Bootstrapping and system initialization, process context switching, I/O hardware and software, DMA, I/O polling, interrupt handlers, device drivers, clock management. Substantial programming implementing or extending an instructional operating system kernel.
CSCE 361 requires participation in a group design and implementation of a software project.
Techniques used in the disciplined development of large software projects. Software requirements analysis and specifications, program design, coding and integration testing, and software maintenance. Software estimation techniques, design tools, and complexity metrics.
Knowledge and techniques useful in the design of computing systems for human use. Includes models of HCI, human information processing characteristics important in HCI, computer system features, such as input and output devices, dialogue techniques, and information presentation, task analysis, prototyping and the iterative design cycle, user interface implementation, interface evaluation.
Outline of the general information retrieval problem, functional overview of information retrieval. Deterministic models of information retrieval systems; conventional Boolean, fuzzy set theory, p-norm, and vector space models. Probabilistic models. Text analysis and automatic indexing. Automatic query formulation. System-user adaptation and learning mechanisms. Intelligent information retrieval. Retrieval evaluation. Review of new theories and future directions. Practical experience with a working experimental information retrieval system.
CSCE 413/813 involves practical experience with a working database system.
Data and storage models for database systems; entity/relationship, relational, and constraint models; relational databases; relational algebra and calculus; structured query language; Logical database design: normalization; integrity; distributed data storage; concurrency; security issues. Spatial databases and geographic information systems.
Constraint processing for articulating and solving industrial problems such as design, scheduling, and resource allocation. The foundations of constraint satisfaction, its basic mechanisms (e.g., search, backtracking, and consistency-checking algorithms), and constraint programming languages. New directions in the field, such as strategies for decomposition and for symmetry identification.
Mathematical preliminaries. Strategies for algorithm design, including divide-and-conquer, greedy, dynamic programming and backtracking. Mathematical analysis of algorithms. Introduction to NP-Completeness theory, including the classes P and NP, polynomial transformations and NP-complete problems.
Turing machine model of computation: deterministic, nondeterministic, alternating, probabilistic. Complexity classes: Time and space bounded, deterministic, nondeterministic, probabilistic. Reductions and completeness. Complexity of counting problems. Non-uniformity. Lower bounds. Interactive proofs.
Review of program language structures, translation, loading, execution, and storage allocation. Compilation of simple expressions and statements. Organization of a compiler including compile-time and run-time symbol tables, lexical scan, syntax scan, object code generation, error diagnostics, object code optimization techniques, and overall design.
Introduction to the classical theory of computer science. Finite state automata and regular languages, minimization of automata. Context free languages and pushdown automata, Turing machines and other models of computation, undecidable problems, introduction to computational complexity.
Credit in CSCE 830 will not count towards a graduate degree in computer science.
Architecture of single-processor (Von Neumann or SISD) computer systems. Evolution, design, implementation, and evaluation of state-of-the-art systems. Memory Systems, including interleaving, hierarchies, virtual memory and cache implementations; Communications and I/O, including bus architectures, arbitration, I/O processors and DMA channels; and Central Processor Architectures, including RISC and Stack machines, high-speed arithmetic, fetch/execute overlap, and parallelism in a single-processor system.
CSCE 432 assumes knowledge of computer architecture, pipelining, memory hierarchy, instruction level parallelism, and compiler principles.
High performance computing at the processor level. The underlying principles and micro-architectures of contemporary high-performance processors and systems. State-of the-art architectural approaches to exploiting instruction level parallelism for performance enhancements. Case studies of actual systems highlight real-world trade-offs and theories.
Introduction to VLSI design using metal-oxide semiconductor (MOS) devices primarily aimed at computer science majors with little or no background in the physics or circuitry of such devices. Includes design of nMOS and CMOS logic, data-path, control unit, and highly concurrent systems as well as topics in design automation.
Embedded hardware design techniques; transceiver design and low-power communication techniques; sensors and distributed sampling techniques; embedded software design and embedded operating systems; driver development; embedded debugging techniques;hardware and software architectures of embedded systems; and design, development, and implementation of embedded applications.
CSCE 437/837 requires the designing and implementation of a real-life file and storage system.
System-level and device-level topics in the design, implementation, and use of file and storage systems. Components and organization of storage systems, disk drive hardware and firmware, multi-disk systems, RAID's, local distributed and P2P file systems, and low-power design.
CSCE230 and CSCE310 or equivalent; senior or graduate standing or instructor permission.
Basics of sensor networks; theoretical and practical insight into wireless sensor networks, including low-power hardware and wireless communication principles; networking in wireless sensor networks; and applications of sensor networks, such as multimedia, underwater, and underground. A group project that provides hands-on interaction with a wireless sensor network testbed.
Approximation of Functions LINKCrosslisted as MATH 441/841
Credit will not count towards a graduate degree in computer science and computer engineering.
Organization and structure of operating systems. Control, communication, and synchronization of concurrent processes. Processor and job scheduling. Memory organization and management including paging, segmentation, and virtual memory. Resource management. Deadlock avoidance, detection, recovery. File system concepts and structure. Protection and security. Substantial programming.
CSCE 455/855 requires a substantial programming project in distributed systems.
Organization and structure of distributed operating systems. Control, communication and synchronization of concurrent processes in the context of distributed systems. Processor allocation and scheduling. Deadlock avoidance, detection, recovery in distributed systems. Fault tolerance. Distributed file system concepts and structure.
Introduction to the fundamentals of parallel computation and applied algorithm design. Methods and models of modern parallel computation; general techniques for designing efficient parallel algorithms for distributed and shared memory multiprocessor machines; principles and practice in programming an existing parallel machine.
Introduction to basic concepts of system administration. Operating systems and networking overview. User and resource management. Networking, systems and internet related security. System services and common applications, web services, database services, and mail servers. Basic scripting in shell, Perl, and Expect. Systems administration on UNIX® platform.
Introduction to the architecture of communication networks and the rudiments of performance modeling. Circuit switching, packet switching, hybrid switching, protocols, local and metro area networks, wide area networks and the Internet, elements of performance modeling, and network programming. Network security, asynchronous transfer mode (ATM), optical, wireless, cellular, and satellite networks, and their performance studies.
Paradigms, systems, and languages for Internet applications. Client-side amd server-side programming, object-based and event-based distributed programmming, and multi-tier applications. Coverage of specific technologies varies.
Initial and ongoing software analysis, including metrics, requirements, correctness, performance, testing and validation. Frameworks and methods for software quality. Benchmarks and testing, processes for quality assurance, performance and quality models, software quality tools, testable designs and automated testing.
Display and recording devices; incremental plotters; point, vector, and character generation; grey scale displays, digitizers and scanners, digital image storage; interactive and passive graphics; pattern recognition; data structures and graphics software; the mathematics of three dimensions; homogeneous coordinates; projections and the hidden-line problem.
Fundamentals and trends in bioinformatics. Scoring matrices and pairwise sequence alignments via dynamic programming, BLAST, and other heuristics. Multiple sequence alignments. Applications of machine learning methods such as hidden Markov models and support vector machines to biological problems such as family modeling and phylogeny.
Digital imaging systems, digital image processing, and low-level computer vision. Data structures, algorithms, and system analysis and modeling. Digital image formation and presentation, image statistics and descriptions, operations and transforms, and system simulation. Applications include system design, restoration and enhancement, reconstruction and geometric manipulation, compression, and low-level analysis for computer vision.
High-level processing for image understanding and high-level vision. Data structures, algorithms, and modeling. Low-level representation, basic pattern-recognition and image-analysis techniques, segmentation, color, texture and motion analysis, and representation of 2-D and 3-D shape. Applications for content-based image retrieval, digital libraries, and interpretation of satellite imagery.
CSCE 474/874 requires the completion of a project involving the application of data mining techniques to real-world problems.
Data mining and knowledge discovery methods and their application to real-world problems. Algorithmic and systems issues. Statistical foundations, association discovery, classification, prediction, clustering, spatial data mining and advanced techniques.
Distributed problem solving and planning, search algorithms for agents, distributed rational decision making, learning multiagent systems, computational organization theory, formal methods in Distributed Artificial Intelligence, multiagent negotiations, emergent behaviors (such as ants and swarms), and Robocup technologies and real-time coalition formation.
Introduction to basic principles, techniques, and tools now being used in the area of machine intelligence. Languages for AI programming introduced with emphasis on LISP. Lecture topics include problem solving, search, game playing, knowledge representation, expert systems, and applications.
Introductory course on cryptography and computer security. Topics: classical cryptography (substitution, Vigenere, Hill and permutation ciphers, and the one-time pad); Block ciphers and stream ciphers; The Data Encryption Standard; Public-key cryptography, including RSA and El-Gamal systems; Signature schemes, including the Digital Signature Standard; Key exchange, key management and identification protocols.
Introduction to the fundamentals and current trends in machine learning. Possible applications for game playing, text categorization, speech recognition, automatic system control, date mining, computational biology, and robotics. Theoretical and empirical analyses of decision trees, artificial neural networks, Bayesian classifiers, genetic algorithms, instance-based classifiers and reinforcement learning.
Introduction to the concepts, design and application of connection-based computing begins by simulating neural networks, focusing on competing alternative network architectures, including sparse distributed memories, Hopfield networks, and the multilayered feed-forward systems. Construction and improvement of algorithms used for training of neural networks addressed to reduce training time and improve generalization. Algorithms for training and synthesizing effective networks implemented in high level language programs running on conventional computers. Emphasis on methods for synthesizing and simplifying network architectures for improved generalization. Application areas include: pattern recognition, computer vision, robotics medical diagnosis, weather and economic forecasting.
Preparation for the senior design project. Professional practice through familiarity with current tools, resources, and technologies. Professional standards, practices and ethics, and the oral and written report styles used specifically in the field of computer science.
A substantial computer science project requiring design, planning and scheduling, teamwork, written and oral communications, and the integration and application of technical and analytical aspects of computer science and software engineering.
Computer Engineering Professional Development LINK
CSCE 488 is a preparation course for the computer engineering Senior Design Project (CSCE 489). CSCE 488 and 489 are a sequence of courses that are to be taken in consecutive terms.
Professional practice through familiarity and practice with current tools, resources, and technologies; professional standards, practices, and ethics; and oral and written report styles used in the computer engineering field.
A substantial computer engineering project requiring hardware-software co-design, planning and scheduling, teamwork, written and oral communications, and the integration and application of technical and analytical aspects of computer science and computer engineering.
Independent project executed under the guidance of a member of the faculty of the Department of Computer Science. Solution and documentation of a computer problem demanding a thorough knowledge of either the numerical or nonnumerical aspects of computer science.