Professor Hesham El-Rewini, Chair
Professors: Margaret Dunham, Hesham El-Rewini, David Matula, Stephen Szygenda; Associate Professors: Thomas Chen, James Dunham, Richard Helgason, Sukumaran Nair, Mitchell Thornton, Jeff Tian; Assistant Professors: Fatih Kocan, Peter-Michael Seidel, Yuhang Wang; Lecturers: Frank Coyle, Donald Evans, Judy Etchison; Adjunct Faculty: William Bralick, Ann Broihier, Hakki Çankaya, Mark Fontenot, Dennis Frailey, Dale Gutt, G.N. Kartha, Kamran Khan, Marco Marchetti, Mohamed Khalil, Richmond G. Lewin, Babu Mani, Matt McBride; Lee McFearin, Riad Mohamed, Freeman Moore, Robert Oshana, Krish Pillai, John Pfister, Mohamed Rayes, Alfred Riccomi, Stephen Stepoway, Yanjun Zhang.
The department of Computer Science and Engineering at SMU offers academic programs in computer engineering and computer science. Faculty specializations include computer architecture, knowledge engineering, software engineering, design and analysis of algorithms, parallel processing, database management, VLSI CAD methods, bioinformatics, computer networks, data and network security, mobile computing, theory of computation, and computer arithmetic. The educational objectives of the undergraduate programs in the department are to produce graduates who are productive professionals in an information technology discipline, are pursuing (have pursued) graduate or professional degrees, are successful entrepreneurs and managers, have a broad knowledge and wide range of interests, are valuable members of their general community, and take a leadership role in their chosen field. As such, the programs are designed to ensure that graduates:
Have a thorough understanding of personal and professional ethics.
Can effectively communicate engineering problems and solutions, both in an oral and written format.
Have demonstrated the ability to apply mathematical knowledge to software/architectural design problems. This includes a basic mathematical background in discrete math, differential and integral calculus, and probability and statistics.
Have demonstrated the ability to apply scientific knowledge.
Have demonstrated the ability to apply software engineering principles to the design and implementation of large software systems.
Are able to design, conduct, and evaluate experiments concerning software and/or hardware solutions.
Have demonstrated the ability to function on a multidisciplinary team using current software or computer engineering tools and techniques.
Have received a broad liberal arts education sufficient to understand the international implications and needs of software systems.
Have demonstrated a basic understanding of core Computer Science or Computer Engineering topics.
The CSE Department is engaged in an ongoing assessment process that evaluates the success in meeting these objectives and enhances the development of the program.
Bachelor of Science Major in Computer Science (122 Term Credit Hours)
Bachelor of Science Major in Computer Science with a Premedical Specialization (129 Term Credit Hours)
Bachelor of Science in Computer Engineering (123 Term Credit Hours)
Bachelor of Arts Major in Computer Science (122 Term Credit Hours)
All B.S. degrees are accredited by ABET.
The School of Engineering offers a dual degree with the Meadows School of the Arts that leads to the degrees of Bachelor of Arts in Music and Bachelor of Arts in Computer Science. Please contact the department for additional details.
The 4+1 Program allows students to complete both B.S. and M.S. degrees in five years. In the CSE department, students may participate in a 4+1 program in either the Computer Science or Computer Engineering area. Up to nine TCHs of graduate courses may be applied toward fulfilling the student's undergraduate program requirements. For additional information, contact the Undergraduate Program Director.
The teacher certification program requires 24 hours of course work and six hours of student teaching. Thus a B.A. CS student is able to complete these requirements by taking all required education courses within the free electives area. In addition, the student would have to complete student teaching. For information on this, please contact the Undergraduate Program Director.
The Guildhall at SMU provides an in depth certificate/Masters level degree program tailored to individuals who wish to become actively involved in the Game Development industry as game designers or programmers. The CSE department is proud to be one of the first schools to offer a BS degree in Computer Science with a track in Game Development. Our program provides the breadth and rigor of an ABET accredited computer science degree while simultaneously providing an in-depth investigation of digital game development fundamentals.
The student who participates in this program spends his/her last semester at the Guildhall taking the first two terms of their six-term program. The student is completely immersed in the Guildhall program during this period. In addition, the senior design project is a game development project performed as part of the Guildhall program. The student is able to participate in both an individual and group-oriented senior design project. A student who successfully completes the Game Development track will be able to obtain a Masters degree with one additional year on site at the Guildhall.
Students in the Department of Computer Science and Engineering have access to a wide range of facilities and equipment. The department's computing environment has evolved into an Ethernet-based network of microcomputers and workstations. General use Unix machines consist of 14 Alpha-based machines, four SUN Sparc, ve DEC Stations mips, and six SGI O2 (mips). Windows-based PC labs are used during the course's rst two years. Access to the network is available via open-area labs containing X terminals and PCs.
Computers play an ever-increasing role in our society. Their use permeates all other academic disciplines and industrial arenas. Computer science is the study of the concepts and theory surrounding computer design and software construction. The SMU undergraduate program in Computer Science provides the student with a solid understanding of these concepts, which provides him or her with the technical knowledge needed to pursue either an advanced degree or a challenging career in the computer industry. The diversity of the School of Engineering computer environment exposes undergraduate computer science students to many different hardware and software systems.
To study and use computers we must communicate with them through a variety of software interfaces, including programming languages. At SMU the student will study several high-level languages such as C++ and Java that simplify the use of computers. In addition, the student is exposed to a variety of Computer Aided Software Engineering (CASE) tools and expert systems shells. Assembly languages and operating systems (such as UNIX) for micro-, mini-, and mainframe computers are studied to provide an understanding of the architecture and organization of a digital computer. Mathematical topics such as discrete mathematics and data structures, graph theory, and Boolean and linear algebra are taken by undergraduates so that they may better understand the internal structure of the computer and the effective utilization of its languages.
Knowledge of the computer's internal structure is important to understanding its capabilities. Thus, the Computer Science student will take courses in assembly language, computer logic, and computer organization. Courses in systems programming and operating systems extend this structural study into the "software" of the computer. A required sequence of software engineering courses prepares our students for advanced systems and software applications.
The free electives in the Computer Science program can also be used to individually tailor a student's study plan. For example, a student desiring a program even more intensive than the Computer Science major could satisfy his or her free electives with more Computer Science courses. A student wishing to obtain a broader education could satisfy these electives with courses offered by any department in the University.
The B.S. degree allows the student to major in any of three concentration tracks or to take a general program where he/she can take nine hours of Computer Science electives as chosen by the student. The Research track allows a student to participate in an undergraduate research project of his/her choice. Just as a graduate student would be required to do, the undergraduate student majoring in Research is required to perform independent research in an area of his/her choice (being advised by a tenure track faculty member), write up the research results, and present the results of the research in a presentation open to the entire university community. The Security track facilitates a more in-depth study of software security issues. As described earlier, the Game Development track is provided in collaboration with the Guildhall.
| Area | Required Courses | TCH |
| Liberal Studies: | ENGL 1301, 1302 | 6 |
| Perspectives | 15 |
|
| Cultural Formations | 6 |
|
| (One Perspectives course or one Cultural Formations course must satisfy the Human Diversity requirement.) | ||
| Mathematics: | MATH 1337, 1338, 3353 | 9 |
| CSE 2353 | 3 |
|
| CSE 3365, 4340 | 6 |
|
| Science: | PHYS 1105, 1106, 1303, 1304 | 8 |
| Six TCH from the following list of courses: | 6 |
|
|
||
|
||
CHEM 1113/1303, 1114/1304, 1307, 1308 |
||
GEOL 1301, 1305, 1307, 1308, 1313 |
||
PHYS 3305 |
||
| Computer Science: | CSE 1341, 2240, 2341, 3381, 3342, 3345, 3353, 3358, 4344, 4345, 4346, 4381, 5343 |
38 |
| Tracks and Electives: | 14 |
|
|
||
Security: CSE 5339, CSE 5349 |
||
Game Development: CSE 5461, CSE 5462, CSE 5463 |
||
General: Any 3 three-hour CSE courses numbered 4000 or above as approved by adviser |
||
Free Electives: All tracks but Game Development require five hours of general electives as approved by adviser. The Game Development track requires two hours of electives. |
||
| Engineering Leadership: | CSE 4360, EMIS 3308, ENCE 3302 | 9 |
| Wellness: | 2 |
|
| ------ |
||
| TOTAL CREDIT HOURS | 122 |
| Area | Required Courses | TCH |
| Liberal Studies: | ENGL 1301, 1302 | 6 |
| Perspectives | 9-12 |
|
| Cultural Formations | 3-6 |
|
| (One Perspectives course or one Cultural Formations course must satisfy the Human Diversity requirement.) |
15 |
|
| Mathematics: | MATH 1337, 1338, 3353 | 9 |
| CSE 2353 | 3 |
|
| CSE 3365, 4340 | 6 |
|
| Science: | PHYS 1105, 1106, 1303, 1304 | 8 |
| BIOL 1401, 1402, 3304, 3350 | 14 |
|
| CHEM 1303, 1304; 1113; 1114; 3117; 3118; 3371, 3372 | 16 |
|
| Computer Science: | CSE 1341, 2240, 2341, 3381, 3342, 3345, 3353, 3358, 4344, 4345, 4346, 4381, 5343 | 38 |
| 3 TCH to be chosen from the following: | 3 |
|
|
||
| Engineering Leadership: | CSE 4360, EMIS 3308, ENCE 3302 | 9 |
| Wellness: | 2 |
|
| ------ |
||
| TOTAL CREDIT HOURS | 129 |
| Area | Required Courses |
TCH |
| Liberal Studies: | ENGL 1301, 1302 |
6 |
| Perspectives |
15 |
|
| Cultural Formations |
6 |
|
|
(One Perspectives course or one Cultural Formations course must satisfy the Human Diversity requirement.) |
||
| Mathematics: | MATH 1337, 1338 |
6 |
| CSE 2353 |
3 |
|
| STAT 2331 |
3 |
|
| Science: | PHYS 1313 |
3 |
| Three TCH from the following list of courses: |
3 |
|
ANTH 2315, 2363 |
||
|
||
CHEM 1301, 1302, 1303, 1304, 1307, 1308 |
||
GEOL 1301, 1305, 1307, 1308, 1313 |
||
PHYS 1303, 1304, 1314, 1407, 1408, 3305 |
||
| Computer Science: | CSE 1341, 2240, 2341, 3381, 3342, 3345, 3358, 4344, 4345, 4346, 4381, 5343 |
35 |
| Six TCH to be selected from the following: |
6 |
|
CSE 5314, 5320, 5330, 5339, 5341, 5342, 5344, 5345, 5348, 5349, 5350, 5359, 5376, 5380, 5381, 5382, 5385, 5387 |
||
| Engineering Leadership: | CSE 4360, EMIS 3308, ENCE 3302 |
9 |
| Free Electives: | The free electives must be approved by the adviser. |
25 |
| Wellness: |
2 |
|
|
------ |
||
| TOTAL CREDIT HOURS |
122 |
A student majoring in Computer Engineering may not minor in computer science.
Requirements:
CSE 1341 Principles of Computer Science I
CSE 2341 Principles of Computer Science II
CSE 2353 Discrete Computational Structures
CSE 3358 Data Structures
Elective Courses:
Any six hours of CSE courses numbered 3000 or above as approved by the CS Minor Adviser.
Computer engineering deals with computers and computing systems. The computer engineer must be capable of addressing problems in hardware, software, and algorithms, especially those problems whose solutions depend upon the interaction of these elements.
The career opportunities of the computer engineer will require a broad range of knowledge. The design and analysis of logical and arithmetic processes that are the basis of computer science provide basic knowledge. Computer engineering courses are concentrated on the interacting nature of hardware and software. Basic electrical engineering is a clear foundation for the computer engineer.
| Area | Required Courses | TCH |
| Liberal Studies: | ENGL 1301, 1302 | 6 |
| Perspectives | 9-12 |
|
| Cultural Formations | 3-6 |
|
| (One Perspectives course or one Cultural Formations course must satisfy the Human Diversity requirement.) |
15 |
|
| Mathematics: | MATH 1337, 1338, 2343, 3353 | 12 |
| CSE 2353, 3365, 4340 | 9 |
|
| Science: | PHYS 1106, 1303, 1304 | 7 |
| CHEM 1303 | 3 |
|
| Three TCH from CHEM 1304; BIOL 1401, 1402; GEOL 1301; PHYS 3305 | 3 |
|
| Engineering Leadership: | CSE 4360, EMIS 3308, ENCE 3302 | 9 |
| Computer Engineering: | CSE 1341, 2240, 2341, 3353, 3358, 3381, 4344, 4381, 5343, EE 2122, 2322, 2350 | 33 |
| Tracks: | 12 |
|
| Hardware: CSE 4386 | ||
| Three of the following: CSE 5380, 5381, CSE 5385 or EE 5385, CSE 5387 |
||
| Software Engineering: CSE 3345, 4345, 4346, 5314 or 5316 or 5319 | ||
| Networking: CSE 4347 | ||
| Three of the following: CSE 5344, 5348, 5349, EE 5376 |
||
| Wellness: | 2 |
|
| Electives: | SoE Advanced Electives | 9 |
| Free Electives | 3 |
|
| ------ |
||
| TOTAL CREDIT HOURS | 123 |
A student majoring in Computer Science may not minor in Computer Engineering.
Requirements:
CSE 1341 Principles of Computer Science I
CSE 2240 Assembly Language Programming and Machine Organization
CSE 2341 Principles of Computer Science II
CSE 2353 Discrete Computational Structures
CSE 3381 Digital Logic Design
CSE 3358 Data Structures
1311. Introduction to Interactive Multimedia. An introduction to multimedia hardware technologies, software systems, and standards used to develop interactive multimedia applications. Topics include screen design, graphics, animation, audio, and still and motion video, as well as compression techniques. Each student will design personal multimedia Web pages that will include one common class theme plus a variety of personally selected subjects. Prerequisite: Permission of instructor.
1319. Introduction to Digital Imaging. Presents an overview of digital imaging in its many varied aspects from the simple to the complex. The hardware reviewed is photographic, video, and scanned conversion mechanisms, and software for editing and converting photographic and video images is introduced. The science behind the electronic image is discussed in detail. This course resolves the many mystifying technical issues involved in the creation, manipulation, processing and output of digital images through myriad examples, detailed technical information, and practical laboratory assignments. Prerequisite: Familiarity with computers. Some programming experience helpful but not required.
1331. Introduction to Web Programming. Examines technologies and techniques for building three-tier Web-based applications. Topics include technologies for developing client-tier graphical user interfaces, server-tier technologies for processing client requests and data-tier database technologies for managing and storing both relational and XML data. Issues related to Web security will be studied throughout the course. All students will participate in team-based collaborative projects.
1340. Introduction to Computing Concepts. Introduction to computer concepts, program structures and interactive application development. Programming with high-level languages, tools, and environments. Laboratory exercises will include programming assignments.
1341. Principles Of Computer Science I. Introduction to the fundamental concepts of computer sciencealgorithms, program structures, data structures. Structured programming in C++. Development of programming skills to solve problems of reasonable complexity. Introduction to UNIX. First course for CS and CpE majors and minors. Prerequisite: A grade of C- or better in CSE 1340 or one course in C, C++ or Java.
2240. Assembly Language Programming and Machine Organization. Computer-related number systems, machine arithmetic, computer instruction set, low-level programming, addressing modes and internal data representation. Prerequisite: A grade of C- or better in 1341.
2337 Introduction to Data Management.This course is designed to provide practical experience using a relational database system and spreadsheet system. The course emphasizes hands-on practical training in the creation and access of relational databases as well as basic and intermediate data analysis using spreadsheet software. Integrating data from a spreadsheet and relational database into other document types is also covered. No credit for CS or CpE majors or minors. Prerequisite:EMIS 1305. Prerequisite/Corequisite: SOCI 2377.
2341. Principles of Computer Science II. Intended as a continuation of CSE 1341; covers object-oriented concepts using the C++ language. Topics include inheritance, templates, polymorphism, exception handling, operator overloading, and File I/O. The course also includes the object-oriented implementation of the basic data structures of linked lists, stacks, queues, sets, and binary trees and their use in efficient program design. A brief introduction to UML is presented; a review of C++ pointers will be given. Prerequisite: A grade of C- or better
in CSE 1341 or equivalent. [Students who have received a 4 or better on the AP exam in C++ or Java may enroll in this course.]
2353. Discrete Computational Structures. Logic, proofs, partially ordered sets, and algebraic structures. Introduction to graph theory and combinatorics. Applications of these structures to various areas of computer science. Prerequisite: A grade of C- or better in CSE 1341.
3342. Programming Languages. Introduction to basic concepts of programming languages, including formal syntax, static and dynamic, scoping, equivalence and consistency of data types, control constructs, encapsulation and abstract data types, storage allocation, and run-time environment. Advanced programming techniques such as tail recursion, inheritance, polymorphism, static and dynamic binding, and exception handling. In-depth studies of representative languages of different programming paradigms object-oriented, logic, and functional programming. Prerequisite: A grade of C- or better in CSE 3358.
3345. Graphical User Interface Design and Implementation. Introduction to the concepts underlying the design and implementation of graphical user interfaces with emphasis on the psychological aspects of human-computer interaction. The course is structured around lectures, case studies and student projects. This course will introduce event-driven programming concepts including the Java API, applications, applets, interfaces, graphics, basic and advanced GUI components, HTML, and multithreading. Prerequisites: A grade of C- or better in CSE 2341 or equivalent.
3353. Fundamentals of Algorithms. Introduction to algorithm analysis, big Oh notation, algorithm classification by efficiency. Basic algorithm strategies and basic approaches to problem solving. Algorithms in hard- and software. Sorting and searching algorithms. Algorithms for arithmetic operations. Introduction to graph theory and graph algorithms. Prerequisites: A grade of C- or better in CSE 2353 Discrete Structures.
3358. Data Structures. Representation and organization of data for fast access and computation. Consideration of efficient algorithms for storing and retrieving information using lists, trees, hash tables, etc. Dynamic storage allocation/collection techniques. Fast sorting techniques. Abstract data types (ADT). Implementation of data structures. Prerequisites: A grade of C- or better in CSE 2341. CSE 2353 is strongly recommended. CSE 3358 should be taken the semester immediately following CSE 2341.
3365 (MATH 3315). Introduction to Scientific Computing. Includes techniques for root-nding, interpolation, functional approximation, linear equations, and numerical integration. Special attention is given to C or FORTRAN programming, algorithm implementations, and library codes. Prerequisites: A grade of C- or better in both CSE 1341 and MATH 1338. Students registering for this course must register for an associated computer laboratory.
3381. Digital Logic Design. Boolean Functions. Logic gates. Memory elements. Synchronous and asynchronous circuits. Shift registers and computers. Logic and control. Corequisite: Weekly no-credit lab. Prerequisite: A grade of C- or better in CSE 2353 and CSE 2240.
4340 (STAT 4340). Statistical Methods for Engineers and Applied Scientists. Basic concepts of probability and statistics useful in the solution of engineering and applied science problems. Topics: probability, probability distributions, data analysis, sampling distributions, estimations, and simple tests of hypothesis. Prerequisite: A grade of C- or better in MATH 1338.
4344. Computer Networks and Distributed Systems. Introduction to network protocols, layered communication architecture, wired and wireless data transmission, data link protocols, network routing, TCP/IP and UDP, e-mail and World Wide Web (www), introduction to distributed computing, mutual exclusion, linearizability, locks, multithreaded computing. Prerequisites: A grade of C- or better in both CSE 3358 and CSE 3381.
4345. Software Engineering Principles. Introduction to software system development. Overview of development models and their stages. System feasibility and requirements engineering, architecture and design, validation and verification, maintenance and evolution. Project management. Review of current software engineering literature. Student teams will design and implement small-scale software systems. Class presentations. The course contains a major design experience. Prerequisites: A grade of C- or better in CSE 3358 and Senior standing.
4346. Software Engineering Design Project. Project course, with a major design component. Students participate in a multidisciplinary group project team. There will be topical discussions in relationship with the project, which include software development life cycle, project team organization, project planning and scheduling, management, testing and validation methods, industrial standards and interfaces, and the importance of lifelong learning. The group project will provide the major design experience for students in the Computer Science program and the Software Engineering track of the Computer Engineering program. Prerequisites: A grade of C- or better in 4345
4347. Networks Design Project. Project course, with a major design component. Students participate in a multidisciplinary group project team. There will be topical discussions in relationship with the project, which include network protocols, layered communication architecture, data communication, data link protocols, internetworking, routing, congestion control, industrial standards and interfaces, and the importance of lifelong learning. The group project will provide the major design experience for students in the Networks track of the Computer Engineering program. Prerequisites: A grade of C- or better in CSE 4344.
4360. Technical Entrepreneurship. Demonstrates the concepts involved in the management and evolution of rapidly growing technical endeavors. Students are expected to participate in active learning by doing, making mistakes and developing solutions, and observing mistakes and approaches made by the other teams. Prerequisites: Junior or Senior standing or graduate student.
4381. Digital Computer Design. Machine organization, instruction set architecture design, memory design, control design: hardwired control and microprogrammed control, algorithms for computer arithmetic, microprocessors, and pipelining. Prerequisite: A grade of C- or better in CSE 3381.
4386. Hardware Design Project. Project course, with a major design component. Students participate in a multidisciplinary group project team. There will be topical discussions in relationship with the project, which include the hardware design and manufacturing process, hardware description languages, modular design principles, quantitative analysis, industrial standards and interfaces, and the importance of lifelong learning. The group project will provide the major design experience for students in the Hardware track of the Computer Engineering program. Prerequisite: C- or better in CSE 4381.
4(1-4)9(0-4). Undergraduate Project. An opportunity for the advanced undergraduate student to undertake independent investigation, design, or development. Variable credit from one to four term hours. Written permission of the supervising faculty member is required before registration.
4(1-3)97. Research Experience for Undergraduates. This course provides research experience for Junior/Senior undergraduate students. Variable Credit from 1-3 hours is given for this course. Permission from the advising CSE faculty member is required before registration. Prerequisites Junior/Senior Standing Computer Science or Computer Engineering major with GPA over 3.0.
5311. Fundamentals of Computer Science. A comprehensive foundation course covering the major aspects of computer science. The course will cover hardware and software fundamentals, operating systems concepts, data structures, discrete structures, algorithms, and programming languages. The course will also address issues related to software engineering and object-oriented programming. This course is intended to prepare students without a computer science background for the Master's program in Software Engineering at SMU.
5314. Software Testing and Quality Assurance. The relationship of software testing to quality is examined with an emphasis on testing techniques and the role of testing in the validation of system requirements. Topics include module and unit testing, integration, code inspection, peer reviews, verification and validation, statistical testing methods, preventing and detecting errors, selecting and implementing project metrics, and defining test plans and strategies that map to system requirements. Testing principles, formal models of testing, performance monitoring, and measurement also are examined. Prerequisite: It is strongly recommended that students have software engineering experience in industry. C- or better in all previous CSE courses and Senior standing.
5316 Software Requirements. Focuses on defining and specifying software requirements that can be used as the basis for designing and testing software. Topics include use-cases for describing system behavior, formal methods, specifying functional vs. nonfunctional requirements and the relationship of requirements to software testing. Prerequisite: C- or better in all previous CSE courses and senior standing.
5319 Software Architecture and Design. Software development requires both an understanding of software design principles and a broader understanding of software architectures that provide a framework for design. The course explores the role of design in the software lifecycle including different approaches to design, design tradeoffs and the use of design patterns in modeling object-oriented solutions. It also focuses on important aspects of a system's architecture including the division of functions among system modules, synchronization, asynchronous and synchronous messaging, interfaces, and the representation of shared information. Prerequisite: C- or better in all previous CSE courses and senior standing.
5320. Artificial Intelligence. Introduction to basic principles and current research topics in artificial intelligence. Formal representation of real-world problems, search of problem spaces for solutions, and deduction of knowledge in terms of predicate logic, nonmonotonic reasoning, and fuzzy sets. Application of these methods to important areas of artificial intelligence, including expert systems, planning, language understanding, machine learning, neural networks, computer vision, and robotics. Prerequisites: A grade of C- or better in both CSE 3342 and CSE 3358.
5330. File Organization and Database Management. A survey of current database approaches and systems, principles of design and use of these systems. Query language design, implementation constraints. Applications of large databases. Includes a survey of file structures and access techniques. Use of a relational DBMS to implement a database design project. Prerequisite: A grade of C- or better in CSE 3358.
5339. Computer System Security. Investigates a broad selection of contemporary issues in computer security, including an assessment of state-of-the-art technology used to address security problems. Specific topics include: sources for computer security threats and appropriate reactions, basic encryption and decryption, secure encryption systems, program security, trusted operating systems, database security, network and distributed systems security, administering security, legal and ethical issues. Prerequisite: A grade of C- or better in CSE 5343.
5341. Compiler Construction. Review of programming language structures, loading, execution, and storage allocation. Compilation of simple expressions and statements. Organization of a compiler including compile-time and run-time symbol tables, lexical analysis, syntax analysis, code generation, error diagnostics, and simple code optimization techniques. Use of a recursive high-level language to implement a complete compiler. Prerequisites: A grade of C- or better in both CSE 3342, and CSE 3358.
5342. Concepts of Language Theory and Their Applications. Formal languages and their relation to automata. Introduction to finite state automata, context-free languages, and Turing machines. Theoretical capabilities of each model, and applications in terms of grammars, parsing, and operational semantics. Decidable and undecidable problems about computation. Prerequisite: A grade of C- or better in CSE 3342 or permission of instructor.
5343. Operating Systems and System Software. Theoretical and practical aspects of operating systems: overview of system software, timesharing and multiprogramming operating systems, network operating systems and the Internet, virtual memory management, interprocess communication and synchronization, file organization, and case studies. Prerequisites: A grade of C- or better in both CSE 2240 and CSE 3358.
5344. Computer Networks and Distributed Systems II. Introduction to network protocols, layered communication architecture, multimedia applications and protocols, Quality of Service (QoS), Congestion control, optical networks, DWDM, network survivability and provisioning, wireless networks. There will be an interdisciplinary project requiring the use of currently available network design and simulation tools. Prerequisite: A grade of C- or better in CSE 4344.
5345. Advanced Java Programming. Provides the student with a foundation for building advanced distributed and embedded systems applications in Java through the use of Java's support for networking and concurrency. Topics will include exception handling, object serialization, thread and thread-safe programming issues, component frameworks, remote method invocation, security, and concurrency issues. Discussion of the issues and techniques necessary to develop high-performance, object-oriented concurrent Java applications and be able to apply advanced Java constructs to research projects in telecommunications, databases, networks, and mobile computing. Prerequisites CSE 3345 or consent of instructor.
5346. Java Distributed Enterprise Computing. Familiarizes students with issues and techniques surrounding the building of distributed enterprise Java applications. Initial focus will be on exceptions, threads, streams, and sockets in support of building Java-based web servers. Building on these basic constructs, the course will explore details of enterprise technology including Java Servlets, Java Server pages (JSP), database connectivity (JDBC), Enterprise Java Beans and J2EE for building tightly-coupled server components. Prerequisite: CSE 5345 or equivalent.
5347. XML and the Enterprise. XML, the Extensible Markup Language, is widely used to define vocabularies for a wide range of applications including software configuration, data exchange, and web-based protocols. This course provides a detailed examination of XML as an enterprise technology. Focuses on APIs, interfaces and standards that are driving this technology including: DTDs and XML Schema to structure SML data; XSLT to transform XML; XML protocols for distributed computing and XML security initiatives. Students will come away with broad understanding of XML and the technical issues and tradeoffs among different alternatives for processing XML. Prerequisite: An understanding of object-oriented concepts; familiarity with Java and/or C++.
5348. Internetworking Protocols and Programming. Processing and Interprocess Communications (IPC), UNIX domain sockets, fundamentals of TCP/IP, Internet domain sockets, packet routing and filtering and firewall, SNMP and network management, client-server model and software design, Remote Procedure Call (XDR, RPC, DCE), design of servers and clients, networking protocols for the World Wide Web, internetworking over new networking technologies. Prerequisites: A grade of C- or better in both CSE 4344 and CSE 5343, and C programming.
5349. Data and Network Security. Covers conventional as well as state-of-the-art methods in achieving data and network security. Private key and public key encryption approaches will be discussed in detail with coverage on popular algorithms such as DES, Blowfish, and RSA. In the network security area, the course will cover authentication protocols, IP security, Web security and system level security. Prerequisite: C- or better in CSE 4344.
5350. Algorithm Engineering. Algorithm design techniques. Methods for evaluating algorithm efficiency. Data structure specification and implementation. Applications to fundamental computational problems in sorting and selection, graphs and networks, scheduling and combinatorial optimization, computational geometry, arithmetic, and matrix computation. Introduction to parallel algorithms. Introduction to computational complexity and a survey of NP-complete problems. Developing student facility to design efficient algorithms is emphasized. Prerequisite: A grade of C- or better in both CSE 3358 and CSE 3353.
5359. Software Security. As software is delivered across networks and web-based environments, security is critical to successful software deployment. This course focuses on software security issues that pertain to the network Application Layer in the classic OSI model. At the application network layer, issues related to encryption, validation, and authentication are handled programmatically rather that at the network level. Students will work with APIs for cryptography, digital signatures and third party certificate authorities. The course will also explore issues related to XML and Web Services security by examining standards and technologies for securing data and programs across collaborative networks. Prerequisite: Programming experience in Java and/or C++.
5376 (EE 5301). Introduction to Telecommunications. Overview of public and private telecommunications systems, traffic engineering, switching, transmission, and signaling. Channel capacity, media characteristics, Fourier analysis and harmonics, modulation, electromagnetic wave propagation and antennae, modems, and interfaces, and digital transmission systems. T1 carriers, digital microwave, satellites, fiber optics and SONET, and Integrated Services Digital Networks.
5380. VLSI Algorithms. Introduction to problems, algorithms, and optimization techniques used in the design of high-performance VLSI design. Emphasis on algorithms for partitioning, placement, floor planning, wire routing, and layout compaction. Additional focus on constraints for the design for field programmable gate arrays (FPGA's) throughout the course. Prerequisites: C- or better in CSE 3381 and C- or better in CSE 3358.
5381. Computer Architecture I. Introduces students to the state of the art in uniprocessor computer architecture. The focus is on the quantitative analysis and cost-performance trade-offs in instruction-set, pipeline, and memory design. Topics covered: quantitative analysis of performance and hardware costs, formal specification, instruction set design, pipeline, delayed branch, memory organization, and advanced instruction-level parallelism. Prerequisites: files, two-dimensional and three-dimensional transformations, clipping and windowing, perspective, hidden line elimination and shaping, interactive graphics, and applications. Prerequisite: A grade of C- or better in CSE 3358.
5382. Computer Graphics. Hardware and software components of computer graphics systems: display files, two-dimensional and three-dimensional transformations, clipping and windowing, perspective, hidden-line elimination and shaping, interactive graphics, and applications. Prerequisite: A grade of C- or better in CSE 3358.
5385. Microprocessor Architecture and Interfacing. Emphasizes the design and interfacing of microprocessor computer systems. Topics covered: processor architecture and interfacing, memory structure and interfacing, bus systems, support chips, tools for hardware design, analysis, simulation, implementation, and debugging. The theoretical part of the course is complemented by a laboratory in which students get practical experience in designing and analyzing interfaces to processors, memories, and peripherals. Prerequisites: A grade of C- or better in CSE 3381 or a grade of C- or better in both EE 2381 and CSE 2240.
5387. Digital Logic Design II. Modern topics in digital systems design including the use of HDLs for circuit specification and automated synthesis tools for realization. Programmable logic devices are emphasized and used throughout the course. This course has heavy laboratory assignment content and a design project. Prerequisite: C- or better in CSE 3381 Digital Logic Design.
5(1-4)9(0-4). Special Topics. Individual or group study of selected topics in computer science. Variable credit from one to four term hours. Written permission of the supervising faculty member is required before registration.
5461. Game Study. This course provides students a foundation in the theory and practice of game analysis and design, with an emphasis on analysis of game genres and lexicon, history of games and play, psychology of game play, and game theory. During the second half of the course, students receive additional depth on the theory and practice of game analysis and design, with an emphasis on story development, community development and social dynamics in games, multiplayer issues, game balance, games as systems and cultural rhetoric, and academic research in games. Students participate in lecture/discussion, case study, and individual/small group assignments. Prerequisites: Senior standing
5462. Software Development for Games. This course provides a foundation in game programming for basic 2D game development, including game coding, scripting, game engine design, data structures, input, working with graphics and sound assets, basic artificial intelligence for games, tool development, and the technical aspects of game testing. The second half of the course examines concepts related to 3D game development, including game coding and scripting, 3D game engine design, advanced data structures, advanced techniques for working with graphics and sound assets, advanced artificial intelligence and rule building, and game mechanics. Prerequisites: Senior standing. CSE 5343.
5463. Mathematical Methods for Game Physics. This course provides a foundation in the theory and practice of mathematics and physics for 2D games, including coordinate systems and spaces, geometric primitives, vectors and vector operations, matrices and transformations, and basic physics concepts related to modeling and simulation. During the second half of the course, a foundation in the theory and practice of mathematics and physics for 3D games, including 3D vectors, 3D matrices and matrix transformations, general four-dimensional transforms, and 3D engine transformation pipeline is provided. Prerequisites: Senior standing: CSE 5343.