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: Faith Kocan, Peter-Michael Seidel; Lecturers: Frank Coyle, Donald. Donald Evans, Judy Etchison; Adjunct Faculty: William Bralick, Hakki Çankaya, Dennis Frailey, Bernie Hirsch, Bhanu Kapoor, Kamran Khan, Mohamed Khalil,Babu Mani, Lee McFearin, Riad Mohamed, Freeman Moore, Robert Oshana, Marius Pasca, 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 and information systems, VLSE CAD methods, bioinformatics, computer netwoks, 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 eld. As such, the programs are designed to ensure that graduates:
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 (132 Term Credit Hours)
Bachelor of Science in Computer Engineering (123 Term Credit Hours)
Bachelor of Arts Major in Computer Science (122 Term Credit Hours)
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.
Students in the Department of Computer Science
and Engineering have access to a wide range of facilities and equipment. The
department's computing environment is 100BaseT switched Ethernet with Gigabit
Ethernet in the core. General use Unix machines consist primarily of 14 Alpha-based
machines and five SUN Sparc machines. MIPS and Intel-based Unix machines are
also used. Windows-based PCs are the primary desktop with X terminals also available.
Desktops are made available in labs for classes and also open study areas.
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.
A 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 program ming 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.
| 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, 3342, 3345, 3353, 3358, 3381, 4344, 4345, 4346, 4381, 5343 |
38 |
| 6 TCH to be selected from the following list: | 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, EMIS 3309, ENCE 3302 | 12 |
| Wellness: | 2 |
|
| Free Electives: | Must be approved by the adviser. | 5 |
| ------ |
||
| 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.) |
||
| Mathematics: | MATH 1337, 1338, 3353 | 9 |
| CSE 2353 | 3 |
|
| CSE 3365, 4340 | 6 |
|
| Science: | PHYS 1105, 1106, 1303, 1304 | 8 |
| BIOL 1401, 1402, 3304, 3306 | 14 |
|
| CHEM 1303, 1304; 1113; 1114; 3117; 3118; 3371, 3372 | 16 |
|
| Computer Science: | CSE 1341, 2240, 2341, 3342, 3345, 3353, 3358, 3381, 4344, 4345, 4346, 4381, 5343 | 38 |
| 3 TCH to be selected from the following: | 3 |
|
|
||
| Engineering Leadership: | CSE 4360, EMIS 3308, EMIS 3309, ENCE 3302 | 12 |
| Wellness: | 2 |
|
| ------ |
||
| TOTAL CREDIT HOURS | 132 |
| 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, 1309, 1314, 1407, 1408, 3305 |
||
| Computer Science: | CSE 1341, 2240, 2341, 3342, 3345, 3358, 3381, 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, EMIS 3309, ENCE 3302 | 12 |
| Free Electives: | The free electives must be approved by the adviser. | 22 |
| 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 provides 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. The Computer Engineering Program at SMU is accredited by ABET.
| 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.) |
||
| 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; EMIS 3309; ENCE 3302 | 12 |
| 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, 5313 or 5316 or 5319 | ||
| Networking: CSE 4347 | ||
| Three of the following: CSE 5344, 5348, 5349, EE 5376 |
||
| Wellness: | 2 |
|
| Electives: | SoE Advanced Electives | 9 |
| ------ |
||
| TOTAL CREDIT HOURS | 122 |
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: CSE 1305 or permission of instructor.
1319. Introduction to Digital Imaging. This course 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. The course 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. Throughout the course issues related to Web security will be studied. 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 Database Design and SQL. This course is designed to provide practical experience in using SQL and ACCESS 2000. It emphasizes hands-on practical training in implementing and accessing relational databases. No credit for CS and CpE majors or minors. Prerequisite: Familiarity with Microsoft Word and Excel packages and both creating and editing les in a Windows environment.
2341. Principles of Computer Science II. This course is intended as a continuation of CSE 1341 and 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 both CSE 1341 and MATH 1338.
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. Discrete Mathematics with 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 both CSE 2341 and CSE 2353.
3365 (MATH 3315). Introduction to Scientific Computing. An elementary survey course that includes techniques for root-finding, 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, email 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. This is a project course, which has 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 life long 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. This is a project course, which has 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 life long 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. The purpose of this course is to demonstrate 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. This is a project course, which has 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 life long 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.
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, verication and validation, statistical testing methods, preventing and detecting errors, selecting and implementing project metrics, and dening 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. The course 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 le 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. The goal of this course is to investigate 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.
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 nite 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, le 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. This course will provide 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. The course is designed to familiarize 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. Focus will be placed 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 ltering and rewall, 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 CSE 5343 and C programming.
5349. Data and Network Security. The course will cover 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 efciency. 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 CSE 3358. CSE 3353 is recommended.
5359. Software Security. As software is delivered across networks and web-based environments, security is critical to successful software deployment. This course will focus 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, trafc 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, ber optics and SONET, and Integrated Services Digital Networks.
5380. VLSI Algorithms. Introduction into 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. An advanced course in computer architecture introducing 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: A grade of C- or better in CSE 4381.
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 a heavy laboratory assignment content and a design project. Prerequisite: C- or better in CSE 3381 Digital Logic Design.