Lyle School of Engineering
(2010 Undergraduate Catalog)
Computer Science and Engineering
Sukumaran Nair, Chair
Margaret Dunham, David Matula, Sukumaran Nair, Stephen Szygenda, Mitchell Thornton, Jeff Tian. Associate Professors:
James Dunham, Richard Helgason. Assistant Professors:
LiGuo Huang, Yuhang Wang. Visiting Assistant Professor:
Michael Hahsler. Senior Lecturer:
Frank Coyle. Lecturers:
Donald Evans, Mark Fontenot. Adjunct Faculty:
Jeffrey Alcantara, Abdelhalim Alsharqawi, William Bralick, Ann Broihier, Hakki Çankaya, Ebru Celikel, Christian Christensen, Aaron Estes, Jahanzeb Faizan, Dennis Frailey, Prasad Golla, Khalid Ishaq, Bhanu Kapoor, Mohamed Khalil, Kamran Khan, Lacy Lapio, Karl Lewis, Lun Li, Kall Loper, Babu Mani, Matt McBride; Lee McFearin, Freeman Moore, Padmaraj M.V. Nair, Robert Oshana, John Pfister, Leonid Popokh, Mohamed Rayes, T. Brett Spell, Gheorghe Spiride, Stephen Stepoway, Raymond Van Dyke.
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, very large-scale integration computer-aided design 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 CSE Department are to produce graduates who are productive professionals in an information technology discipline, are pursuing (or 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:
For graduates with degrees in computer science:
- An ability to apply knowledge of computing and mathematics to software design and computing problems.
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
- An ability to design, implement and evaluate a computer-based system, process, component or program to meet desired needs.
- An ability to function effectively on teams to accomplish a common goal.
- An understanding of professional, ethical, legal, security and social issues and responsibilities.
- An ability to communicate effectively with a range of audiences both in an oral and written form.
- The broad liberal arts education necessary to analyze the local and global impact of computing on individuals, organizations and society.
- Recognition of the need for, and an ability to engage in, continuing professional development and lifelong learning.
- An ability to use the techniques, skills and modern computing and software engineering tools necessary for computing practice.
For graduates with degrees in computer engineering:
- An ability to apply knowledge of mathematics, science and engineering to software and hardware design problems.
- An ability to design and conduct experiments and to analyze and interpret data related to software and hardware design solutions.
- An ability to design a system, component or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability.
- An ability to function on multidisciplinary teams using current computer engineering tools and technologies.
- An ability to identify, formulate and solve engineering problems based on a fundamental understanding of concepts of computer engineering topics.
- An understanding of personal, professional and ethical responsibility.
- An ability to communicate effectively both in an oral and written form.
- The broad liberal arts education necessary to understand the impact of engineering solutions in a global, economic, environmental and societal context.
- Recognition of the need for, and an ability to engage, in lifelong learning.
- Knowledge of contemporary issues in computer engineering.
- An ability to use the techniques, skills and modern engineering tools necessary for computer engineering practice.
The CSE Department is engaged in an ongoing assessment process that evaluates the success in meeting these outcomes and enhances the development of the program.
Bachelor of Science – Major in Computer Science
(123/124* term credit hours)
Bachelor of Science – Major in Computer Science With a Premedical Specialization
(129 term credit hours)
Bachelor of Science in Computer Engineering
(127 term credit hours)
Bachelor of Arts – Major in Computer Science
(122 term credit hours)
* The B.S. in computer science degree in the gaming track requires one additional hour of coursework.
The undergraduate program in computer engineering is accredited by the Engineering Accreditation Commission of ABET, 111 Market Place, Suite 1050, Baltimore, MD 21202-4012 – telephone: (410) 347-7700. The undergraduate computer science program that awards the degree Bachelor of Science (B.S.) is accredited by the Computing Accreditation Commission of ABET. The undergraduate computer science program that awards the degree Bachelor of Arts (B.A.) is not accredited by a Commission of ABET.
Dual Degree Program
The Lyle School of Engineering offers a dual degree with the Meadows School of the Arts that leads to the degrees of B.A. in music and B.A. in computer science. Contact the department for additional details.
4+1 Master's Degree Program
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 the 4+1 Program in either the computer science or computer engineering area. Up to nine total credit hours 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 coursework and six hours of student teaching. Thus a B.A. in computer science 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 program, contact the CSE Department.
Students in the CSE Department have access to a wide range of facilities and equipment. The department's computing environment has evolved into an Ethernet-based network of personal computers and servers. General-use UNIX servers that run OSF1 and Linux are available. A wireless network is also available throughout the CSE facilities. Windows-based PC labs are used during the first two years of coursework. Access to the network is also available via open-area labs containing 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 is designed to give students a solid understanding of these concepts, providing them with the technical knowledge needed to pursue either an advanced degree or a challenging career in the computer industry. The diversity of the Lyle School of Engineering computer environment exposes undergraduate computer science students to many different hardware and software systems.
To study and use computers, one 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, students are exposed to a variety of computer-aided software engineering 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, graph theory, and Boolean and linear algebra are included in required undergraduate classes so that students 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, computer science students 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 students for advanced systems and software applications.
The free electives in the B.A. in computer science program can also be used to individually tailor a student's study plan. For example, students who want a program even more intensive than the computer science major could satisfy their free electives with more computer science courses. Students interested in a broader education could satisfy these electives with courses offered by any department in the University.
The B.S. degree allows students to major in any of three concentration tracks or to pursue a general program where they can choose nine hours of computer science electives. The research track allows students to participate in an undergraduate research project of their choice. Like graduate students, undergraduate students majoring in research are required to perform independent research in an area of their choice (with a tenure-track faculty member as an adviser), document 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. The game development track is provided in collaboration with The Guildhall at SMU.
Bachelor of Science With a Major in Computer Science
* Students choosing the gaming track require 16 hours of coursework in the game development track and only 6 hours of advanced electives in the Lyle School of Enginering for a total degree requirement of 124 hours.
Bachelor of Science With a Major in Computer Science Bioinformatics Track
Bachelor of Science With a Major in Computer Science With Premedical Specialization
Bachelor of Arts With a Major in Computer Science
A student majoring in computer engineering may not minor in computer science.
Principles of Computer Science I
Principles of Computer Science II
Discrete Computational Structures
Any six hours of CSE courses numbered 3000 or above as approved by the computer science minor adviser.
Computer engineering deals with computers and computing systems. Computer engineers must be capable of addressing problems in hardware, software and algorithms, especially those problems whose solutions depend upon the interaction of these elements.
Career opportunities for computer engineers 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 computer engineers.
A student majoring in computer science may not minor in computer engineering.
CSE 1341 Principles of Computer Science I
CSE 1342 Programming Concepts
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
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, object-oriented programming and interactive application development. Extensive programming projects emphasizing logical control structures and the use of libraries.
1341. Principles Of Computer Science.
Introduction to the fundamental concepts of computer science and object-oriented design of reusable modules. The course covers basic object-oriented concepts of composition, inheritance, polymorphism and containers. First course for computer science and computer engineering majors and minors.
1342. Programming Concepts.
Introduction to the constructs provided in the C/C++ programming language for procedural and object-oriented programming. Computation, input and output, flow of control, functions, arrays and pointers, linked structures, use of dynamic storage, and implementation of abstract data types. Prerequisites: C-
or better in CSE 1341 or equivalent, a grade of at least a 4 on the AP Computer Science A Exam or departmental consent.
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. Corequisite: C-
or better in CSE 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 computer science or computer engineering majors or minors. Prerequisite:
EMIS 1305 or ME 1305. Prerequisite/corequisite:
2341. Data Structures.
Emphasizes the object-oriented implementation of data structures, including linked lists, stacks, queues, sets and binary trees. The course covers object-oriented software engineering strategies and approaches to programming. Prerequisite: C-
or better in CSE 1342 or equivalent.
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: C-
or better in CSE 1341.
3330. Database Concepts.
This course provides coverage of fundamental information management and database systems concepts, including file and disk organization, information models and systems, data modeling, relational database design, physical implementation of database systems, and query languages for accessing databases systems. As time permits, topics from information privacy and security, information storage and retrieval, data mining, and multimedia information systems will be included. Prerequisites: C-
or better in CSE 2341 and 2353.
3342. Programming Languages.
Introduction to basic concepts of programming languages and compilers, including formal syntax, regular languages and finite automata, lexical analysis, context-free grammar and parsing, 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: C-
or better in CSE 2341.
3345. Graphical User Interface Design and Implementation.
Introduction to the concepts underlying the design and implementation of graphical use 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. Prerequisite: C-
or better in CSE 2341 or equivalent.
3353. Fundamentals of Algorithms.
Introduction to algorithm analysis, big-Oh notation and algorithm classification by efficiency. Basic algorithm design strategies and approaches to problem solving. Sorting and searching algorithms. Introduction to graph theory and graph algorithms. Prerequisites: C-
or better in CSE 2341 and 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 MATLAB programming, algorithm implementations and library codes. Prerequisite: C-
or better in MATH 1338. Corequisites:
CSE 1340 or 1341; students registering for this course must also register for an associated computer laboratory.
3381. Digital Logic Design.
Boolean functions, logic gates, memory elements, synchronous and asynchronous circuits, shift registers and computers, and logic and control. Prerequisites: C-
or better in CSE 2240 and 2353. Corequisite: Weekly no-credit lab.
4051. Gaming Design Project.
This course requires students enrolled in HGAM 5391 to produce appropriate reports and other design documentation material resulting from their HGAM 5391 design experience. Design requirements, specifications, test plans and other relevant documentation as required for assessing the design experience are included in these materials. Corequisite:
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, estimation and simple tests of hypothesis. Prerequisites:
MATH 1337 and 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 the World Wide Web, introduction to distributed computing, mutual exclusion, linearizability, locks, and multithreaded computing. Prerequisite: C-
or better in CSE 2341.
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: C-
or better in CSE 2341 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 relation to 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. Prerequisite: C-
or better in CSE 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 relation to 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. Prerequisite: 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. Prerequisite:
Junior standing or higher.
4381. Digital Computer Design.
Machine organization, instruction set architecture design, memory design and control design: hardwired control and microprogrammed control, algorithms for computer arithmetic, microprocessors and pipelining. Prerequisite: 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 relation to 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 one to three 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.
5050. Undergraduate Internship.
5111. Intellectual Property and Information Technology.
This course presents fundamentals in the nature, protection and fair use of intellectual property. Patent, copyright, trademark, trade secret and antitrust principles are presented with an emphasis on the Internet, software, databases and digital transmission technologies. The open source and creative commons alternatives for disseminating intellectual property are investigated. Examines the engineer's, scientist's, manager's and creative artist's professional and ethical responsibilities and opportunities regarding intellectual property. Also, investigates the rapid change in types and uses of intellectual property spawned by computers, digital media, e-commerce and biotechnology.
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 SMU Master's program in software engineering.
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. Prerequisites: C-
or better in all previous CSE courses and senior standing. It is strongly recommended that students have software engineering experience in industry.
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. Prerequisites: C-
or better in all previous CSE courses and senior standing.
5319. Software Architecture and Design.
Software development requires 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. Prerequisites: 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: C-
or better in CSE 3342 and 3353.
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 and implementation constraints. Applications of large databases. Includes a survey of file structures and access techniques. Use of a relational DBMSto implement a database design project. Prerequisite: C-
or better in CSE 3330.
5331. An Introduction to Data Mining and Related Topics. The purpose of this course is to introduce students to various data mining and related concepts. All material covered will be reinforced through hands-on implementation exercises. In this introductory course, a high-level applied study of data mining techniques will be used. Prerequisite: C-
or better in CSE 3330.
5335. Introduction to Bioinformatics.
This course will give the students an up-to-date introduction to the field of bioinformatics. It covers a wide variety of bioinformatics topics from a computer science perspective, including algorithms for DNA/protein sequence analysis, protein 3-D structural alignment, gene expression microarray analysis, Single Nucleotide Polymorphism (SNP)microarray analysis, proteomics data analysis, protein-protein interaction data analysis, pathway data analysis and gene ontology. This course only assumes biology knowledge at the high school level. Some related biological background beyond high school will be included in the lectures. Prerequisite: C-
or better in CSE 3353 or equivalent, or permission of instructor.
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, and legal and ethical issues. Prerequisite: C-
or better in CSE 5343.
5340. Service-Oriented Computing.
Service-oriented computing (SOC) is the computing paradigm that utilizes services as fundamental elements for developing applications. Service providers expose capabilities through interfaces. Service-oriented architecture maps these capabilities and interfaces so they can be orchestrated into processes. Fundamental to the service model is the separation between the interface and the implementation, such that the invoker of a service need only (and should only) understand the interface; the implementation can evolve over time, without disturbing the clients of the service. Prerequisites:
Senior or graduate standing. Programming experience is required.
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: C-
or better in CSE 3342 and 3353.
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: 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: C-
or better in CSE 2240 and 3353.
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, and wireless networks. Includes an interdisciplinary project requiring the use of currently available network design and simulation tools. Prerequisite: C-
or better in CSE 4344.
5345. Advanced Application Programming.
The course covers advanced programming techniques that span a range of programming languages and technologies. Topics include server-side application development, client GUI implementation, application frameworks, design patterns, model-based development and multithreading. The specific programming language or languages covered may vary from term to term. Prerequisite:
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 JavaBeans; 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 XML data, XSLT to transform XML, XML protocols for distributed computing, and XML security initiatives. Students gain a broad understanding of XML and the technical issues and tradeoffs among different alternatives for processing XML. Prerequisites:
An understanding of object-oriented concepts and 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, and internetworking over new networking technologies. Prerequisites: C-
or better in CSE 4344 and 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. Emphasis on developing student facility to design efficient algorithms. Prerequisite: C-
or better in CSE 3353.
5356 (EE 5356). VLSI Design and Lab.
This laboratory-oriented course for senior and Master's-level graduate students will cover an overview of integrated circuit design and fabrication, basic design rules, and layout techniques. Emphasis will be on digital design. CMOS and NMOS technology will be covered. Each student must complete one or more design projects by the end of the first term. Prerequisites: C-
or better in EE 2181, 2381 and 3311.
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 than at the network level. Students work with APIs for cryptography, digital signatures and third-party certificate authorities. The course also explores 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++.
5360. Introduction to 3-D Animation.
An introduction to computer graphics, with an emphasis on the popular software package Maya. Includes focus on the user interface, creation of 3-D geometry using polygonal techniques, materials and textures, kinematics, animation, and camera and lighting techniques. This course explores the various aspects and fundamentals of computer graphics. Students gain a core understanding of the workflow necessary to create 3-D imagery. Assignments require students to combine a variety of techniques to become familiar with the computer animation production process. Prerequisite:
Junior standing or higher. Course may not be used for credit in a graduate degree program in CSE without adviser’s approval.
5376 (EETS 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 throughout the course. Prerequisites: C-
or better in CSE 3353 and 3381.
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. Prerequisite: C-
or better in CSE 4381.
5382. Computer Graphics.
Hardware and software components of computer graphics systems: display files, 2-D and 3-D transformations, clipping and windowing, perspective, hidden-line elimination and shaping, interactive graphics, and applications. Prerequisite: C-
or better in CSE 3353.
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. Prerequisite: C-
or better in CSE 3381 or EE 3381.
5387 (EE 5387). Digital Systems Design.
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 or EE 2381.
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.