Computer Science & Software Engineering (CSE)

CSE 102. Introduction to Computing and Engineering. (3)

This course introduces students to the computing and engineering disciplines with a focus on electrical, computer and software engineering. The course focuses on various computing and engineering design principles and tools used in the profession. Students will be able to model, implement, and test these principles via projects required throughout the course. This course is open to all majors.
Cross-listed with ECE.

CSE 141. Personal Computer Applications. (2)

An introductory course for students who wish to become computer literate in common personal computer applications. The course emphasizes the use of Miami's computer resources, word processing, spreadsheet and presentation programs, with some exposure to common security and database management programs. Extensive hands-on use of personal computers. Not open to CSE majors and students with regular business standing. Credit not awarded for both CSE 141 and CSE 148 or CIT 154. Graded credit/no credit.

CSE 148. Business Computing. (3)

An introduction to business-oriented computer skills. Extensive hands-on use of electronic spreadsheets and database software. Examples and exercises will stress problem-solving in a business context. Credit not awarded for both CSE 148 and CSE 243.

CSE 151. Computers, Computer Science, and Society. (3) (MPF)

Perspective on the potential and limitations of computing technology. Topics include problem-solving in computing, computers as thinking machines, and the impact of computing on societies. Exposes students to programming languages and various computer tools. Not open to CSE and ISA majors. V.

CSE 153. Introduction to C/C++ Programming. (3) (MPT)

Introduction to use of C/C++ programming language as an aid to solving mathematical and scientific problems. Students design, write, and implement programs.

CSE 163. Introduction to Computer Concepts and Programming. (3) (MPF, MPT)

Introduction to computers in data processing, survey of various hardware and software concepts, and analysis and solution of problems by computer programming. Lecture/laboratory, project-oriented course to provide numerous opportunities to analyze problems, formulate alternative solutions, implement solutions, and assess their effectiveness. No prior knowledge of computer concepts or programming assumed. V.
Prerequisite: MTH 102 or higher, or a score of 12 or higher on the mathematics placement test, or permission of instructor.

CSE 174. Fundamentals of Programming and Problem Solving. (3) (MPT)

Algorithm development and refinement in problem solving. Modular programming using sequence, selection, and repetition control structures. Program debugging and testing. Formatted input/output. Data files. Fundamental data types. User-defined data types: structured and enumerated. Arrays and arrays of structures. Simple sorting and searching algorithms. Character data and string processing. Algorithm efficiency considerations. Classes, objects, and introduction to object-oriented programming.
2 Lec. 1 Lab.
Prerequisite: MTH 102 or higher, or a score of 12 or higher on the mathematics placement test, or permission of instructor.

CSE 177. Independent Studies. (0-5)

CSE 201. Introduction to Software Engineering. (3)

Principles of software engineering: Introduction to all phases of the software development life cycle and associated tools and engineering methods including the unified modeling language (UML).
Prerequisite: CSE 271.

CSE 211. Software Construction. (3)

General principles and techniques for disciplined detailed software design. Basic theory of grammars and parsing. State-transition and table-based design. Formal specification languages and program derivation. Techniques for handling concurrency and inter-process communication. Tools for model-driven construction.
Prerequisites: CSE 201, CSE 274 and MTH 231.

CSE 212. Software Engineering for User Interface and User Experience Design. (3)

Principles of user interfaces (UI) and user experiences (UX) for software engineering. Psychological principles; Design methods such as task analysis and user-centered design. Projects demonstrating window, menu, and command design; voice and natural language I/O; response time and feedback; color, icons, sound.
Prerequisite: CSE 271.

CSE 220. Professional Practice. (0)

Students participating in computer technology associate's degree co-op program register for this course during semesters when they are on work assignment. This enables students to maintain continuing student status with the university.

CSE 241. Computational Modeling and Simulation. (3)

Introduction to computational modeling and simulation of physical, biological, and engineering problems through mathematics and computer science tools. Examples of problems studied are complex problems such as adjusting drug dosages, bungee jumping, enzyme kinetics, and controlling malaria. Students will develop computational models in a programming language such as MATLAB.
Prerequisite: MTH 151 or equivalent, or permission of instructor.

CSE 243. Problem Analysis Using Computer Tools. (3) (MPF)

Students will learn to use personal computer productivity tools to analyze data, work with others in conducting analyses, develop conclusions and effectively communicate results. Students will utilize spreadsheet tools to analyze data and will be challenged to evaluate data from multiple perspectives in order to develop conclusions supported by their analysis. Students will use word processing tools to integrate text and graphical information that clearly and concisely communicates their conclusions. While an important part of the course is learning to use the software tools, the emphasis of the course is learning to use these tools to solve problems and communicate results. Credit not awarded for both CSE 243 and CSE 148. V.

CSE 251. Introduction to Game Programming. (3)

Introduction to computational modeling and simulation of physical, biological, and engineering problems through mathematics and computer science tools. Examples of problems studied are complex problems such as adjusting drug dosages, bungee jumping, enzyme kinetics, and controlling malaria. Students will develop computational models in a programming language such as Matlab.
Prerequisite: MTH 151 or permission of instructor.

CSE 252. Web Application Programming. (3) (MPT)

An introduction to programming concepts and practices for creating applications which use the web as the delivery platform. Students will learn technologies including HTML, Javascript, AJAX, client side programming and server side scripting to create interactive web applications. Not an elective for computer science and systems analysis majors.
Prerequisite: CSE 153 or CSE 163 or CSE 174.

CSE 253. Programming Languages. (1-2)

Presents syntax and semantics of a particular programming language currently popular in industrial or academic settings. Addresses construction of programs in the language. Applications of the language presented. Coverage of good programming style and software engineering concepts addressed in context of the language. Not applicable to CSE electives requirement for a CSE major.

CSE 256. Introduction to Programming for the Life Sciences. (3)

Introduction to programming for majors in the life sciences. The ability to write programs to perform tasks related to the organization and analysis of biological data has become a highly-valued skill for researchers in the life sciences, allowing wet-lab researchers to quickly process and sort through large amounts of data to find information relative to their own work. This course serves as an introduction to programming designed specifically for life science majors, targeting the specific skills and techniques commonly needed and explaining the fundamental methods of working with biological data while centering programming assignments around topics of interest to those studying the life sciences. Topics covered include basic programming techniques, representation and manipulation of genomic and protein sequence data, and the automated interface with BLAST and the NCBI GenBank database.
Cross-listed with BIO/MBI.

CSE 262. Technology, Ethics, and Global Society. (3) (MPF)

Inquiry into a wide range of information technology issues, from moral responsibilities affecting professionals to wider ethical concerns associated with information technology in day-to-day living. Topics include general aspects of ethics; common ethical theories; professional codes of ethics in IT; privacy, secruity and reliability in using computer systems and the internet; issues and responsibilities in internet usage; legal issues in IT; global perspectives of computing issues; and general problems related to ethical and responsible computing. IIB, IIC.
Prerequisites: ENG 111 and a minimum of 20 credit hours earned.
Cross-listed with CIT.

CSE 270. Special Topics. (3)

Special topics in computer science, computer information systems, or operations research.
Prerequisite: permission of instructor.

CSE 271. Object-Oriented Programming. (3) (MPT)

The design and implementation of software using object-oriented programming techniques including inheritance, polymorphism, object persistence, and operator overloading. Students will analyze program specifications and identify appropriate objects and classes. Additional programming topics include dynamic memory recursion, using existing object libraries, and binary/ASCII file processing.
Prerequisite: CSE 174 with a grade of C- or better or equivalent.

CSE 273. Optimization Modeling. (3) (MPT)

Use of deterministic models and computers to study and optimize systems. Includes an introduction to modeling, calculus-based models, financial models, spreadsheet models, and linear-programming models.
Prerequisite: MTH 251 or equivalent.

CSE 274. Data Abstraction and Data Structures. (3) (MPT)

Abstract data types and their implementation as data structures using object-oriented programming. Use of object-oriented principles in the selection and analysis of various ADT implementations. Sequential and linked storage representations: lists, stacks, queues, and tables. Nonlinear data structures: trees and graphs. Recursion, sorting, searching, and algorithm complexity.
Prerequisites: CSE 271 with a grade of C- or better and MTH 231 or CSE 271 with a grade of C- or better and MTH 222, MTH 251 or equivalent, and ECE 287.

CSE 277. Independent Studies. (0-5)

CSE 278. Computer Architecture. (3)

Principles of Von Neumann computer architecture. Data representation and computer arithmetic. Memory hierarchy. CPU structure and instruction sets. Assembly language programming to better understand and illustrate computer architecture concepts. Performance considerations and alternative computer architectures.
Prerequisite: CSE 271.

CSE 283. Data Communication and Networks. (3)

Introduction to data communications, computer networks, protocols, and distributed processing as well as relevant standards and underlying theory. Topics include communication codes, transmission methods, interfacing, error detection, communication protocols, communications architectures, switching methods, and network types. Local area network and internetwork technologies are studied. The client/server model of distributed processing addressed. Students design and implement data communications and network-based software.
Prerequisite: CSE 271.

CSE 287. Foundations of Computer Graphics and Games. (3)

This course is an introduction to techniques used to create images on the computer. The course covers the algorithms and mathematical theory behind three dimensional image generation with an emphasis on 3D geometry, 3D transformations, and the graphics pipeline. Programming required.
Prerequisites: CSE 271 and MTH 151.

CSE 310. Undergraduate Research Seminar. (1; maximum 3)

Seminar or workshop on topics in computer science, software engineering, or related fields.

CSE 311. Software Architecture and Design. (3)

An in-depth look at software design. Study of software architecture, design patterns and software product lines. Designing for quality attributes such as performance, safety, security, reusability, reliability, etc. Measuring internal qualities and complexity of software designs. Evolution of designs. Basics of software evolution, reengineering, and reverse engineering. Application of formal methods to specify and evaluate designs.
Prerequisite: CSE 201.

CSE 320. Professional Practice. (0)

Students participating in the computer science and systems analysis co-op program register for this course during semesters when they are away from Oxford on work assignment. This enables students to maintain continuing student status with the university.

CSE 321. Software Quality Assurance and Testing. (3)

Quality: how to assure it and verify it, and the need for a culture of quality. Avoidance of errors and other quality problems. Inspections and reviews. Testing, verification and validation techniques. Process assurance vs. Product assurance. Quality process standards. Product and process assurance. Formal verification. Statistical testing.
Prerequisite: CSE 201.

CSE 322. Software Requirements. (3)

Domain engineering. Techniques for discovering and eliciting requirements. Languages and models for representing requirements. Analysis and validation techniques, including need, goal, and use case analysis. Specifying and measuring external qualities. Traceability. Agile approaches.
Prerequisite: CSE 201.

CSE 340. Internship. (0-20)

CSE 340U. Undergraduate Summer Scholars Program. (1-12)

CSE 372. Stochastic Modeling. (3) (MPT)

Survey of methods of stochastic operations research including reliability, Markov processes, queuing theory, and decision theory. Computer used for modeling and solving problems.
Prerequisite: STA 368 and registration in STA 401/STA 501.

CSE 377. Independent Studies. (0-5)

CSE 381. Operating Systems. (3)

Introduction to operating systems concepts. The operating system as a resource manager. Principles for the design and implementation of operating systems. User interface programming in current operating systems. Process scheduling and deadlock prevention. Memory management, virtual memory, paging, and segmentation. Interrupt processing. Device management, I/O systems and I/O processing. Security and protection. Examples of operating systems including distributed and open systems.
Prerequisites: CSE 274 and either CSE 278 or ECE 289 or ECE 387.

CSE 383. Client Server Programming. (3)

An introduction to developing client/server based software solutions. Students will study various architectures and approaches including web-based and custom server systems. Students will design and construct both clients and servers using multiple platforms and systems.
Prerequisites: CSE 274 and CSE 283.

CSE 385. Database Systems. (3)

Overview of database management, database system architecture, and database modeling principles. Logical database design. The relational database model, relational integrity constraints, and relational algebra. Relational commercial database management systems and languages. Interactive database processing, view processing, and database application programming. Database integrity. Relational database design by normalization. File structures for database systems.
Prerequisite: CSE 274.

CSE 386. Introduction to Computer Graphics. (3)

Introduction to techniques to create images on the computer. Covers graphics hardware and software, animation, mathematical theory behind 2- and 3-dimensional translation, rotation, and scaling, and areas of graphics application such as computer-aided design. Programming required.
Prerequisite: CSE 274 and MTH 231.

CSE 387. Advanced Graphics and Game Engine Design. (3)

The course covers graphics hardware, game engine architectures, and the mathematics and algorithms used to create digital games. Topics will include shader based rendering and programming. Students will implement portions of a game engine which incorporates animation, collision detection, and simulated physics. Programming required.
Prerequisite: CSE 287.

CSE 441/CSE 541. Applications of Technical Computing Environments. (1)

This course provides engineering and science students with knowledge of technical computing environments, such as MATLAB or Mathematica, to solve a wide range of engineering and science problems. The emphasis is on the numerical solution of problems in linear algebra, differential equations, and optimization. Several toolboxes or libraries, such as those for signal processing, bioinformatics, and symbolic manipulation will be covered.
Prerequisites: CEC 102 or equivalent, MTH 245 or MTH 347, and STA 368 (or equivalent).
Co-requisites: CSE 153 and 174, or 603, or equivalent.
Cross-listed with MME 441/MME 541.

CSE 443/CSE 543. High Performance Computing & Parallel Programming. (3)

Introduction to practical use of multi-processor workstations and supercomputing clusters. Developing and using parallel programs for solving computationally intensive problems. The course builds on basic concepts of programming and problem solving.
Prerequisite: CSE 278 or ECE 289.

CSE 448. Senior Design Project. (2) (MPC)

Student teams, with varied academic backgrounds, conduct major open-ended research/design projects. Elements of the design process are considered as well as real-world constraints, such as economic and societal factors, marketability, ergonomics, safety, aesthetics, and ethics; feasibility and design studies performed.
Prerequisites: CSE 201 and CSE 274 and senior standing in student's major.

CSE 449. Senior Design Project. (1-2) (MPC)

Continuation of CSE 448. Student teams, with varied academic backgrounds, conduct major open-ended research/design projects; implementation, testing, and production of design. Nonmajors can register for 1-2 credits.
Prerequisite: CSE 448.

CSE 451/CSE 551. Web Services and Service Oriented Architectures. (3)

Intro to service-oriented architectures; examine purposes and differences between different web service technologies; analyze shortcomings and strengths of integration techniques; development of cross-platform applications using standard interchange languages.
Prerequisites: CSE 274 and 283.

CSE 456/CSE 556. Bioinformatic Principles. (3)

Concepts and basic computational techniques for mainstream bioinformatics problems. Emphasis placed on transforming biological problems into computable ones and seeking solutions. Cross-listed BIO/MBI 485/MBI 585/585.
Prerequisites: any one of these courses: BIO/MBI 116, MBI 201, BIO 342, CHM 332, CHM 433/CHM 533; or permission of instructor.

CSE 464/CSE 564. Algorithms. (3)

Review of basic data structures and algorithms. Analysis of algorithms. Problem assessment and algorithm design techniques. Algorithm implementation considerations. Concept of NP-completeness. Analysis of algorithms selected from topics relevant to computer science and software engineering (sorting, searching, string processing, graph theory, parallel algorithms, NP-complete problems, etc.)
Prerequisite: MTH 231 or discrete math and CSE 274 or equivalent.

CSE 465/CSE 565. Comparative Programming Languages. (3)

Survey of programming languages and their accompanying paradigms. Basic principles of syntax, semantics, implementation, and pragmatics are addressed. The survey will include representatives from the families of imperative languages, functional languages, logic languages, and hybrid languages. Formal methods of definition and specification are introduced.
Prerequisite: CSE 274 or equivalent.

CSE 466/CSE 566. Bioinformatics Computing Skills. (3)

Programming in Perl and MATLAB. Use of BLAST, BioPerl, BioPHP, and MATLAB Bioinformatics Toolbox. Emphasis placed on biological database design, implementation, management, and analysis. Recommended prerequisite: programming course and BIO 116, or BIO 342; or permission of instructor.
Cross-listed with BIO/CHM/MBI.

CSE 467/CSE 567. Computer and Network Security. (3)

Fundamentals of network, operating system and application security. Students will study and implement a variety of security techniques including defense, response and forensics. Extensive analysis, reading and writing will be integral to this course.
Prerequisite: CSE 283 and CSE 383, for 567: graduate standing or permission of instructor.

CSE 470/CSE 570. Special Topics In CSE. (3)

Advanced special topics in computer science, computer information systems, or operations research.
Prerequisite: permission of instructor.

CSE 470B. Computational Genomics. (3)

CSE 471/CSE 571. Simulation. (3) (MPT)

Use of digital computer program to simulate operating characteristics of stochastic dynamic system. Topics: problems encountered in construction of simulation programs, random number generation, random variate sampling, programming in simulation compiler languages, problems in design of successful simulation investigations, design of simulation experiments, interpretations of simulated output, and verification and validation. Case studies and projects used.
Prerequisites: CSE 174 or equivalent; and STA 368 or 401.

CSE 473/CSE 573. Automata, Formal Languages, and Computability. (3)

Regular expressions. Closure properties. Sequential machines and finite state transducers. State minimization. Chomsky hierarchy grammars, pushdown acceptors and linear bounded automata. Closure properties of algorithms on grammars. Turing machine as acceptor and transducer. Universal machine. Computable and noncomputable functions. Halting problem.
Prerequisite: CSE 274 or equivalent and MTH 231 or discrete math.

CSE 474/CSE 574. Compiler Design. (3)

Examination of the nature of programming languages and programs which implement them. Compiler and interpreter design and implementation techniques. Review of grammars and languages (context free, context sensitive, regular). Design of interactive interfaces. Parsing of context free languages. Lexical analysis. Semantic analysis and code optimization.
Prerequisite: CSE 274 or equivalent.

CSE 477. Independent Studies. (0-5)

CSE 480/CSE 580. Special Problems. (1-4; maximum 12)

Special systems problems decided by students in consultation with instructor. For students in departmental or university honors program.
Prerequisite: permission of department chair prior to registration.

CSE 485/CSE 585. Advanced Database Systems. (3)

Relational calculus. Query processing and optimization. Transaction processing: failure, recovery, and concurrency. Database security. Logic-based systems. Parallel, distributed, and client/server systems. Object-oriented database systems. Emerging database technologies.
Prerequisite: CSE 385 or equivalent and MTH 231.

CSE 486/CSE 586. Introduction to Artificial Intelligence. (3)

Basic concepts of artificial intelligence (AI) including problem solving, search knowledge representation, and rule-based systems covered with symbolic AI language such as PROLOG or LISP. Application areas (natural language understanding, pattern recognition, learning and expert systems) are explored.
Prerequisite: CSE 274 or equivalent and MTH 231.

CSE 487/CSE 587. Game Design and Implementation. (3)

Study of architectures, algorithms, and software design patterns used in computer games. Students work with a game engine to design and implement several kinds of games. Topics include animation techniques, physics simulation, user controls, graphical methods, and intelligent behaviors.
Prerequisite: CSE 386, for 587: graduate standing or permission of instructor.

CSE 491. Undergraduate Research. (1-4; maximum 10)

Research problems in computer science, systems analysis, or operations research, chosen in consultation with a faculty advisor. Requires a public presentation of completed work. For grade only.
Prerequisites: Permission of instructor and approval of department chair.

CSE 600. Independent Studies. (1-3; maximum 3)

Special problems in computer science, computer information systems, or operations research requiring reading and research, decided in consultation with the instructor and the student's graduate adviser. Does not apply toward fulfillment of the requirements of the graduate program. Credit/no-credit only.
Prerequisite: permission of instructor and department chair.

CSE 603. Computer Programming. (3)

A graduate-level introduction to computer programming in a contemporary language. Algorithm development, refinement, and problem-solving approaches. Data types and control structures. Program debugging and testing. Interactive input/output. Single and multi-dimensional arrays. Simple sorting and searching algorithms. Introduction to classes, objects, and object-oriented programming. An introduction to object-oriented programming techniques that includes inheritance, polymorphism, and composition.

CSE 606. Data Structures & Algorithms. (4)

Abstract data types and their implementation as data structures using object-oriented programming. Lists, stacks, queues, tables, trees, and graphs. Recursion, sorting, searching, and algorithm complexity. Three credit hours lecture, one credit hour lab.
Prerequisites: CSE 603 and 607, or permission of instructor.

CSE 609. Programming for Engineers and Scientists. (3)

This course addresses programming skills at an intermediate level and focuses specifically on scientific and engineering computing skills. This course will emphasize topics commonly encountered in scientific computing/computational science. It primarily addresses non-parallel (serial) computing competencies and is a prerequisite to the high performance computing area. The course will focus on an appropriate programming language currently used in research. Recommended prerequisite: a programming course in any language.

CSE 610. Seminar in Computer Science. (1-3)

Seminar topics in computer science, computer information systems, or operations research. Does not apply toward fulfillment of the requirements of the Master of Systems Analysis. Credit/no-credit only.
Prerequisite: permission of instructor.

CSE 615. Mathematical Modeling. (3)

Use of deterministic and stochastic mathematical models to study and optimize systems. This course includes an introduction to mathematical modeling and the study of linear programming, network models, Markov processes and queuing theory. Students will use computer software for model construction and problem solving.
Prerequisites: credit in calculus, probability, statistics, or permission of instructor.

CSE 616. Simulation of Physical Systems. (3)

This course is an introduction to the principles and use of simulation, and suitable software tools, to model the behavior of physical systems in the sciences and engineering. Concepts related to discrete event simulation including random number generation, scheduling and processing are addressed. Concepts related to continuous simulation including linear, nonlinear, and dynamic systems are studied. Students will design and implement simulations using suitable modeling and simulation software tools.

CSE 617. Advanced Networks. (3)

Study of advanced networking techniques, client/ server programming, and distributed processing. Critical analysis of these areas develops as students learn the strengths and weaknesses of these technologies through assigned programming projects.

CSE 618. Graphics for Simulation and Virtual Environments. (3)

Study of hardware, software, and algorithms used in computer graphics. Instruction emphasizes the use of a scene graph-based API. Topics will include lighting, blending, texture mapping, non real-time rendering techniques such as radiosity and ray tracing.

CSE 620. Special Topics. (3)

Special topics in computer science, computer information systems, or operations research.
Prerequisite: permission of instructor.

CSE 620K. A Survey of Computational Tools in Bioinformatics. (3)

CSE 621. Foundations of Software Engineering. (3)

Foundational theories for software engineering. Topics include project management, modeling notations, refinements processes, verification and validation, and evolution.

CSE 627. Machine Learning. (3)

Concepts and algorithms of machine learning including version-spaces, decision trees, instance-based learning, networks, evolutionary computation, Bayesian learning and reinforcement learning.

CSE 630. Graduate Professional Practice. (0)

Students participating in the masters of computer science program may register for this course during semesters when they are away from Oxford working in an internship or co-op work experience related to the degree. This enables students to maintain continuing student status with the university.
Prerequisite: permission of instructor.

CSE 631. Ontologies for Semantic Web. (3)

Principles, practice and current research underlying the use of ontologies for the Semantic Web. Key concepts including: ontology representation and reasoning, ontological engineering, software tools, ontology visualization, and applications.
Prerequisite: CSE 486/CSE 586 or permission of instructor.

CSE 664. Advanced Algorithms. (3)

A review of NP-Completeness and poly-time reductions; an introduction to randomized algorithms and the randomized complexity classes PP, RP, and BPP; an introduction to approximation algorithms for solving NP-Hard problems; polynomial-space algorithms and the classes PSPACE and the poly-time hierarchy; Poly-time approximation schemes and approximation algorithms via linear-program rounding.

CSE 667. Cryptography. (3)

This course presents the techniques and tools used in modern cryptography. The course covers common cryptographic assumptions and tools, including: pseudorandomness, symmetric key cryptography, and asymmetric key cryptography. Recommended co-requisite: CSE 464/CSE 564/564.
Prerequisite: graduate standing or permission of instructor.

CSE 690. Graduate Research. (3)

Research problems in computer science, computer information systems, or operations research, decided upon in consultation with the instructor and student's graduate adviser. Requires a public presentation of completed work. For grade only.
Prerequisite: permission of instructor, student's graduate adviser, and graduate director.

CSE 700. Research for Master's Thesis or Project. (0-9; maximum 6)

Study under graduate faculty supervision of a research problem related to computer science or software engineering. Approval and public presentation of a project proposal is required within the first three hours of research. Upon completion of research, the results must be defended before the advisory committee for approval. Minimum of two semesters of research toward fulfillment of the research requirement. Maximum of six credit hours of CSE 700 may be applied toward fulfillment of the credit-hour requirement for the Master of Computer Science.