SCHOOL OF ENGINEERING
COMPUTER SCIENCE AND ENGINEERING
Professor Hesham El-Rewini, Chair
Professors: Margaret Dunham, Hesham El-Rewini,
Abdelsalam (Sumi) Helal, David Matula, Sukumaran Nair, Stephen Szygenda, Mitchell
Thornton; Associate Professors: Thomas Chen, James Dunham,
Richard Helgason, Jeff Tian; Assistant Professors: Li Guo
Huang, Fatih Kocan, Yuhang Wang; Senior Lecturer: Frank Coyle; Lecturers: Donald
Evans, Mark Fontenot, Judy Etchison; Adjunct Faculty: William
Bralick, Ann Broihier, Hakki Çankaya, Dennis Frailey, G.N. Kartha, Kamran
Khan, Marco Marchetti, Mohamed Khalil, Richmond G. Lewin, Babu Mani, Matt McBride,
Lee McFearin, Freeman Moore, Robert Oshana, John Pfister, Mohamed Rayes, 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 (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:
-
An ability to apply knowledge of mathematics, science, and engineering to the design of software and hardware.
-
An ability to design and conduct experiments and to analyze and interpret data related to software and hardware 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 multi-disciplinary teams using current software or computer engineering tools and technologies.
-
An ability to identify, formulate, and solve engineering problems based on a fundamental understanding of concepts of computer science or computer engineering topics.
-
An understanding of personal and professional ethical responsibility.
-
An ability to communicate effectively both in an oral and written form.
-
A 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 life-long learning.
-
Knowledge of contemporary issues.
-
The ability to use the techniques, skills and modern engineering tools necessary for engineering practice.
-
The ability to apply software engineering principles to the design and implementation of large software systems.
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.
Degrees
Bachelor of Science — Major in Computer Science (122/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 (123 Term Credit Hours)
Bachelor of Arts — Major in Computer Science (122 Term Credit Hours)
* The B.S. CS degree in the gaming track requires two additional hours of coursework.
The undergraduate program in computer engineering is accredited by the Engineering Accreditation Commission of ABET, Inc., 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 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.
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 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.
Teaching Certification
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.
Game Development
The Guildhall at SMU provides an in-depth certificate/Master’s 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 or her last term at the Guildhall taking the first two terms of their seven-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 Master’s degree with one additional year on site at the Guildhall.
Computing Facilities
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 personal computers and servers. General use Unix servers are available that run OSF1, SunOS and Linux. A wireless network is also available throughout the facilities of CSE. 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 X terminals and PCs.
Curriculum in Computer Science
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.
Bachelor of Science with a Major in Computer Science
Curriculum Requirements
| 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 |
||
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/16* |
|
|
||
Game Development: HGAM 5201, 5202, 5311, 5312, 5221, 5222, |
||
Security: CSE 5339, 5349 |
||
General: Any 3 three-hour CSE courses numbered 5000 or above as approved by adviser |
||
| Engineering Leadership: | CSE 4360, EMIS 3308, ENCE 3302 | 9 |
| Wellness: | 2 |
|
| _____ |
||
| TOTAL CREDIT HOURS | 122/124 |
* Students choosing the gaming track require two additional hours of coursework in their degree plan.
Bachelor of Science with a Major in Computer Science – Bioinformatics Track
Curriculum Requirements:
| Area | Required Courses | TCH |
| Liberal Studies: | ENGL 1301, 1302 | 6 |
| Perspectives | 9-12 |
|
| Cultural Formations | 3-6 |
|
| Mathematics: | MATH 1337, 1338, 3353 | 9 |
| CSE 2353 | 3 |
|
| CSE 3365, 4340 | 6 |
|
| Science: | PHYS 1105, 1106, 1303, 1304 | 8 |
| BIOL 1401, 3304 | 7 |
|
| CHEM 1303/1113 | 4 |
|
| Computer Science: | CSE 1341, 2240, 2341, 3381, 3342, 3345, 3353, 3358, 4344, 4345, 4346, 4381, 5343 |
38 |
| Bioinformatics Track: | CSE 5335, CSE 5331, BIOL 5305 Any two additional three-hour CSE courses numbered 5000 or above as approved by adviser. |
15 |
| Engineering Leadership: | CSE 4360, EMIS 3308, ENCE 3302 | 9 |
| Wellness: | 2 |
|
_____ |
||
| TOTAL CREDIT HOURS | 122 |
Bachelor of Science with a Major in Computer Science with Premedical Specialization
Curriculum Requirements:
| 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, 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 |
Bachelor of Arts with a Major in Computer Science
Curriculum Requirements
| 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, 1303, 1304 |
||
GEOL 1301, 1305, 1307, 1308, 1313 |
||
PHYS 1303, 1304, 1314, 3305 |
||
| Computer Science: | CSE 1341, 2240, 2341, 3381, 3342, 3345, 3358, 4344, 4345, 4346, 4381, 5343 |
35 |
| Six TCH to be chosen 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 |
Minor In Computer Science
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.
Curriculum in Computer Engineering
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.
Bachelor of Science with a Major in Computer Engineering
| 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: | ||
| School of Engineering Advanced Electives | 9 |
|
| Free Electives | 3 |
|
_____ |
||
| TOTAL CREDIT HOURS | 123 |
Minor in Computer Engineering
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
The Courses (CSE)
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 I. Intended as a continuation of CSE 1340. 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 CS and CpE majors and minors. Prerequisite: A grade of C- or better in CSE 1340 or at least a 4 on the AP exam.
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 or ME 1305. Prerequisite/Corequisite: SOCI 2377.
2341. Principles of Computer Science II. 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 in interdisciplinary teams. Prerequisite: A grade of C- or better in CSE 1341 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: 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.
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 term immediately following CSE 2341.
CSE 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. Prerequisites: A grade of C– or higher in MATH 1338. Corequisite: 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. 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, 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 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: Senior standing and a grade of C- or better in CSE 3358.
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. Prerequisites: A grade of 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. 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 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 G.P.A. over 3.0.
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. We examine the engineer’s, scientist’s, manager’s, and creative artist’s professional and ethical responsibilities and opportunities regarding intellectual property. We will also investigate 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 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.
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: A grade of C- or better in CSE 3358.
5335. Introduction to Bioinformatics. This course will give the students an up-to-date introduction to the field of bioinformatics. It will cover a wide variety of bioinformatics topics from a computer science perspective, including algorithms for DNA/protein sequence analysis, protein 3D 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. Prerequisites: C- or better in both CSE 3353 and CSE 3358 or equivalent, or by permission of the 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, 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 bothCSE 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 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. Emphasis on developing student facility to design efficient algorithms.. 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++.
5360. Introduction to 3D Animation. An introduction to computer graphics with an emphasis on the popular software package Maya. Includes focus on the user interface, creation of 3D 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 should gain a core understanding of the workflow necessary to create 3D 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 (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. Prerequisite: 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 EE 3381.
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.
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.


