COMPUTER SCIENCE & ENGINEERING
Professor Hesham El-Rewini, Chair
Professors: Margaret H. Dunham, Hesham El-Rewini, David W. Matula, Sukumaran Nair, Stephen A. Szygenda; Associate Professors: Thomas Chen, Richard V. Helgason, James G. Dunham, Mitchell A. Thornton, Jeff Tian; Assistant Professors: Fatih Koçan, Peter-Michael Seidel, Yuhang Wang; Senior Lecturer: Frank Coyle; Lecturers: Judy Etchison, Donald E. Evans, Mark Fontenot; Adjunct Faculty: Jeffrey D. Alcantara, Feridoon Amini, William A. Bralick Jr., Ann E. Broihier, Hakki Candan Cankaya, Dennis Frailey, Mohamed Khalil, Kamran Z. Khan, R. Gary Lewin, Babu V. Mani, F. Marco Marchetti, Matthew R. McBride, Lee D. McFearin, Freeman L. Moore, Robert S. Oshana, John J. Pfister, Mohamed Omar Rayes, Stephen L. Stepoway, Yanjun Zhang.
The department offers graduate programs in computer engineering, computer science, security engineering, and software engineering. Faculty research interests include CAD methods and algorithms for digital systems design, computer arithmetic, computer architecture, configurable hardware, design automation, VLSI design, bioinformatics, database systems, data mining, design and analysis of algorithms, theory of computation, software engineering, parallel processing, mobile computing, computer networks, fault tolerance, computer security and information assurance.
In addition to the research labs, 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.
Graduate Degrees
Master of Science in Computer Engineering
Master of Science (Major in Computer Science)
Master of Science (Major in Software Engineering)
Master of Science (Major in Security Engineering)
Ph.D. (Major in Computer Engineering)
Ph.D. (Major in Computer Science)
Graduate Certificates
Series of Certificates in Software Engineering
Certificate in Computer Security and Information Assurance
The Computer Science and Engineering Department currently offers four graduate programs:
Master of Science in Computer Engineering
Introduction
The program requires either 24 hours of course work and Master's thesis, or 30 hours of course work. All students take 12 hours of core courses, 6 hours of concentration, and 12 hours of electives. Thesis students take 6 hours of thesis, instead of concentration. All students are allowed to take at most 3 hours of independent study, which will be counted as one elective course. Students on campus are required to register for zero hours of seminar course, at least one term, and secure a pass grade. All requirements must be completed within 7 calendar years of entry into the program.
Admission Requirements
Prerequisites to regular admission to the Computer Engineering Master's Program:
- Baccalaureate degree in computer engineering, computer science, or related fields conferred prior to the time student begins classes as a graduate student; Grade Point Average at least 3.0 on a 4.0 point basis in the student's junior and senior years. Applicants with undergraduate degrees in other disciplines may also be admitted to the program and may be required to take articulation course work.
- A reasonable level of mathematical maturity.
- Foreign students are required to submit their scores on the Test of English as a Foreign Language (TOEFL) or its equivalent.
- All applicants to the Graduate Division must submit an official Graduate Record Examination General Test score before their application can be considered.
Adviser
Upon entry into the program, students are assigned a faculty advisor. The responsibility of this advisor is to help the student with the selection of course schedule.
Credit Requirements
Courses must be taken to satisfy minimum residency and credit level requirements. In addition, the CSE Department requires that the courses taken constitute a coherent program leading to mastery in computer engineering. These requirements are discussed in the subsequent subsections.
Articulation
All students entering the program are expected to possess knowledge equivalent to the following courses:
- CSE 2240 Assembly Language Programming and Machine Organization
- CSE 2353 Discrete Computational Structures
- CSE 3358 Data Structures
- CSE 3381 Digital Logic Design
- CSE 4381 Digital Computer Design
Students with deficiencies may be granted conditional admission to the program and be required to take some of the above courses as articulation. Students are required to complete these articulation courses, maintaining a 3.00 average. The student who fails to achieve this record is automatically dropped from the graduate program, may not enroll in graduate courses, and may be denied the right to petition for readmission. Students who maintain the 3.00 Grade Point Average (G.P.A.) in these courses may advance into the balance of their Plan of Study. As nearly as possible, these articulation courses should be completed before the courses in the balance of the Plan of Study are attempted. An articulation course must be completed before undertaking any graduate course work, which requires it as prerequisite.
Residency and Level Requirements
- A minimum of 30 graduate credits must be earned towards an M.S. degree, of which at least 24 must be earned in residency at SMU. Up to 6 credits may be transferred with departmental approval.
- Of the 30 credit hours needed for graduation, at least 9 credit hours must be at the 8000 level, with the remainder at the 7000 level or above.
- Courses in which a grade lower than "C-" is earned do not count toward a graduate degree, however, they do count toward the total G.P.A.
Distribution of Courses
Courses are considered to be core, concentration, or elective. Core courses cover material considered fundamental to graduate level computer science and are required of all students. Each student is expected to specialize in some area of computer engineering. The concentration area is a mechanism by which a student can tailor a coherent program of study to his/her interests. Electives are courses taken to round out the 30-credit hour requirement. Transferred credits may be used to satisfy any of these requirements. The specific requirements are discussed in detail in the following subsections.
Course Requirements
A student who elects to take the nonthesis option must take 12 hours of core courses, 6 hours of concentration, and 12 hours of electives. Those who elect to take thesis option will substitute the advanced electives with thesis hours
Core Courses (12 hours)
The core consists of the following required courses:
- CSE 7343 Operating Systems and Systems Software
- CSE 7344 Computer Networks and Distributed Systems
- CSE 7381 Computer Architecture
- CSE 7387 Digital Logic Design II
- CSE 8098 Computer Science Seminar
These courses may be waived for extremely well-prepared students at the discretion of CSE graduate program committee. In that case, an equivalent number of elective credits would be required. CSE 7350 is strongly recommended for students interested in design, however, it is not a requirement for the degree.
Concentration (6 hours in one of the following programs)
Architecture
Two of the following:
- CSE 7385 Microprocessor Architecture and Interfacing
- CSE 8377 Fault-Tolerant Computing
- CSE 8380 Parallel and Distributed Processing
- CSE 8383 Advanced Computer Architecture
Design Automation
Two of the following:
- CSE 7380 VLSI Algorithms
- CSE 8377 Fault-Tolerant Computing
- CSE 8387 CAD Methods in VLSI
- EE 7356 VLSI Design and Lab
Networking
Two of the following:
- CSE 7348 Internetworking Protocols and Programming
- CSE 7349 Data and Network Security
- CSE 8344 Computer Networks
- CSE 8349 Advanced Network and System Security
Electives (12 hours)
- CSE 7314 Software Testing and Quality Assurance
- CSE 7320 Artificial Intelligence
- CSE 7330 File Organization and Database Management
- CSE 7341 Compiler Construction
- CSE 7339 Computer System Security
- CSE 7350 Algorithm Engineering
- CSE 7342 Concepts of Language Theory and Their Applications
- CSE 7344 Computer Networks and Distributed Systems II
- CSE 7345 Advanced Java Programming
- CSE 7348 Internetworking Protocols and Programming
- CSE 7349 Data and Network Security
- CSE 7359 Software Security
- CSE 7380 VLSI Algorithms
- CSE 7382 Computer Graphics
- CSE 7385 Microprocessor Architecture and Interfacing
- CSE 7387 Digital Logic Design II
- CSE 8312 Software Generation and Maintenance
- CSE 8313 Object-Oriented Analysis and Design Methodology
- CSE 8314 Software Metrics and Quality Engineering
- CSE 8316 User Interface Design
- CSE 8317 Software Reliability and Safety
- CSE 8320 Knowledge-Intensive Problem Solving
- CSE 8321 Machine Learning and Neural Networks
- CSE 8322 Natural Language Processing
- CSE 8325 Logic Programming
- CSE 8330 Advanced Database Management Systems
- CSE 8331 Data Mining
- CSE 8337 Information Retrieval
- CSE 8340 Advanced Topics in Software Engineering
- CSE 8342 Formal Languages and Automata
- CSE 8343 Advanced Operating Systems
- CSE 8344 Computer Networks
- CSE 8349 Advanced Network Security
- CSE 8350 Algorithms II
- CSE 8351 Computer Arithmetic
- CSE 8353 Combinatorial Algorithms
- CSE 8355 Graph Theory: Algorithms and Applications
- CSE 8358 Information Structures
- CSE 8359 Cryptography and Data Security
- CSE 8377 Fault Tolerance
- CSE 8380 Parallel and Distributed Processing
- CSE 8383 Advanced Computer Architecture
- CSE 8387 CAD Methods in VLSI
- EE 7356 VLSI Design and Lab
- EE 8370 Performance Modeling and Evaluation of Computer Networks
- EETS 8306 Wireless, Cellular, and Personal Telecommunications
- EETS 8307 Telecommunications Network Management
- EETS 8309 Video Compression and Transmission
Under some circumstances an elective not on the approved list may be taken. You must obtain the consent of your advisor and the CSE Graduate Program Committee.
Thesis Option
A student may elect to write a Master's thesis, which counts as the 6 hours of concentration. The student must register for at least 6 hours under CSE 7(1-6)96. If the thesis option is chosen all other requirements are the same.
A Master's thesis represents one or more of the following: synthesis of divergent ideas or a scholarly critique of current literature; a creative research activity; or a significant design project, the results of which must be documented in a well written thesis. The thesis should be of publishable quality, and it is recommended that it be submitted to an appropriate conference or journal before the thesis defense.
A thesis must be supervised by a faculty advisor selected by the student. Any full-time faculty member supporting the student's concentration area may serve as the thesis advisor. It is the student's responsibility to either find an advisor willing to provide a thesis topic or willing to supervise a topic of the student's choosing.
Once the student has found an advisor and topic has been selected, the student and advisor should jointly form a thesis supervisory committee. This committee must consist of at least three members, two of whom must represent the concentration area. The advisor chairs this committee. The makeup of this committee must be approved by the Chair of CSE and the Director of the Graduate Division.
The student must provide the members of the committee with a written thesis proposal. Typically this will be done before faculty agrees to serve on the committee.
A thesis is judged by the supervisory committee based upon technical merit, originality, and presentation. The thesis must be presented orally to the committee at a thesis defense. A copy of the thesis must be made available to each member of the committee at least 2 weeks before the planned defense. The defense must be scheduled with the CSE Department office and posted in appropriate bulletin boards. The defense is open to the public.
Master of Science (Major in Computer Science)
Introduction
The program requires either 24 hours of course work and Master's thesis, or 30 hours of course work. All students take 12 hours of core courses and 6 hours of concentration and 12 hours of electives. Thesis students take 6 hours of thesis, instead of concentration. All students are allowed to take at most 3 hours of independent study, which will be counted as one elective course. Students on campus are required to register for zero hours of seminar course, at least one term, and secure a pass grade. All requirements must be completed within 7 calendar years of entry into the program.
Admission Requirements
Prerequisites to regular admission to the Master's Program:
- Baccalaureate degree in computer science, computer engineering, or related fields conferred prior to the time student begins classes as a graduate student; Grade Point Average at least 3.00 on a 4.00 point basis in the student's junior and senior years. Applicants with undergraduate degrees in other disciplines may also be admitted to the program and may be required to take articulation course work.
- A reasonable level of mathematical maturity.
- Foreign students are required to submit their scores on the Test of English as a Foreign Language (TOEFL) or its equivalent.
- All applicants to the Graduate Division must submit an official Graduate Record Examination General Test score before their application can be considered.
Adviser
Upon entry into the program, students are assigned a faculty advisor. The responsibility of this initial advisor is to help the student with the selection of an initial course schedule and a program advisor.
Credit Requirements
Courses must be taken to satisfy minimum SMU residency and credit level requirements. In addition, the CSE Department requires that the courses taken constitute a coherent program leading to mastery of computer science. These requirements are discussed in the subsequent subsections.
Articulation
All students entering the program are expected to possess knowledge equivalent to the following CSE courses:
- CSE 2353 Discrete Computational Structures
- CSE 3342 Programming Languages
- CSE 3358 Data Structures
- CSE 3381 Digital Logic Design
- CSE 4381 Digital Computer Design
Students with deficiencies may be granted conditional admission to the program and be required to take some of the above courses as articulation. Students are required to complete these articulation courses, maintaining a 3.00 average. The student who fails to achieve this record is automatically dropped from the graduate program, may not enroll in graduate courses, and may be denied the right to petition for readmission. Students who maintain the 3.00 Grade Point Average (G.P.A.) in these courses may advance into the balance of their Plan of Study. As nearly as possible, these articulation courses should be completed before the courses in the balance of the Plan of Study are attempted. An articulation course must be completed before undertaking any graduate course work, which requires it as prerequisite.
Residency and Level Requirements
- A minimum of 30 graduate credits must be earned towards an M.S. degree, of which at least 24 must be earned in residency at SMU. Up to 6 credits may be transferred with departmental approval.
- Of the 30 credit hours needed for graduation, at least 9 credit hours must be at the 8000 level, with the remainder at the 7000 level or above.
- Courses in which a grade lower than "C-" is earned do not count toward a graduate degree, however, they do count toward the total G.P.A.
Distribution of Courses
Courses are considered to be core, concentration, or elective. Core courses cover material considered fundamental to graduate level computer science and are required of all students. Each student is expected to specialize in some area of computer science. The concentration area is a mechanism by which a student can tailor a coherent program of study to his/her interests. Electives are courses taken to round out the 30-credit hour requirement. Transferred credits may be used to satisfy any of these requirements. The specific requirements are discussed in detail in the following subsections.
Course Requirements
A student who elects to take the nonthesis option must take 12 hours of core courses, 6 hours of concentration, and 12 hours of electives. Those who elect to take thesis option will substitute the advanced electives with thesis hours.
Core Courses (12 hours)
The core consists of the following required courses:
- CSE 7330 File Organization and Database Management
- CSE 7343 Operating Systems and Systems Software
- CSE 7350 Algorithm Engineering
- CSE 7381 Computer Architecture
- CSE 8098 Computer Science Seminar
These courses may be waived for extremely well-prepared students at the discretion of CSE graduate program committee. In that case, an equivalent number of elective credits would be required.
Concentration (6 hours in one of the following programs):
Algorithms
Two of the following:
- CSE 7380 VLSI Algorithms
- CSE 8350 Algorithms II
- CSE 8351 Computer Arithmetic
- CSE 8353 Combinatorial Algorithms
- CSE 8355 Graph Theory: Algorithms and Applications
Architecture
Two of the following:
- CSE 7380 VLSI Algorithms
- CSE 8377 Fault-Tolerant Computation
- CSE 8380 Parallel and Distributed Processing
- CSE 8383 Advanced Computer Architecture
- CSE 8387 CAD Methods in VLSI
Software
Two of the following:
- CSE 8313 Object-Oriented Analysis and Design Methodology
- CSE 8330 Advanced Database Management Systems
- CSE 8331 Data Mining
- CSE 8337 Information Retrieval
- CSE 8343 Advanced Operating Systems
Electives (12 hours)
- CSE 7314 Software Testing and Quality Assurance
- CSE 7320 Artificial Intelligence
- CSE 7330 File Organization and Database Management
- CSE 7341 Compiler Construction
- CSE 7339 Computer System Security
- CSE 7342 Concepts of Language Theory and Their Applications
- CSE 7344 Computer Networks and Distributed Systems II
- CSE 7345 Advanced Java Programming
- CSE 7348 Internetworking Protocols and Programming
- CSE 7349 Data and Network Security
- CSE 7359 Software Security
- CSE 7380 VLSI Algorithms
- CSE 7382 Computer Graphics
- CSE 7385 Microprocessor Architecture and Interfacing
- CSE 7387 Digital Logic Design II
- CSE 8312 Software Generation and Maintenance
- CSE 8313 Object-Oriented Analysis and Design Methodology
- CSE 8314 Software Metrics and Quality Engineering
- CSE 8316 User Interface Design
- CSE 8317 Software Reliability and Safety
- CSE 8320 Knowledge-Intensive Problem Solving
- CSE 8321 Machine Learning and Neural Networks
- CSE 8322 Natural Language Processing
- CSE 8325 Logic Programming
- CSE 8330 Advanced Database Management Systems
- CSE 8331 Data Mining
- CSE 8337 Information Retrieval
- CSE 8340 Advanced Topics in Software Engineering
- CSE 8342 Formal Languages and Automata
- CSE 8343 Advanced Operating Systems
- CSE 8344 Computer Networks
- CSE 8349 Advanced Network Security
- CSE 8350 Algorithms II
- CSE 8351 Computer Arithmetic
- CSE 8353 Combinatorial Algorithms
- CSE 8355 Graph Theory: Algorithms and Applications
- CSE 8358 Information Structures
- CSE 8359 Cryptography and Data Security
- CSE 8377 Fault Tolerance
- CSE 8380 Parallel and Distributed Processing
- CSE 8383 Advanced Computer Architecture
- CSE 8387 CAD Methods in VLSI
- EE 7356 VLSI Design and Lab
- EE 8370 Performance Modeling and Evaluation of Computer Networks
- EETS 8306 Wireless, Cellular, and Personal Telecommunications
- EETS 8307 Telecommunications Network Management
- EETS 8309 Video Compression and Transmission
Under some circumstances an elective not on the approved list may be taken. You must obtain the consent of your advisor and the CSE Graduate Program Committee.
Thesis Option
A student may elect to write a Master's thesis, which counts as the 6 hours of concentration. The student must register for at least 6 hours under CSE 7(1-6)96. If the thesis option is chosen all other requirements are the same.
A Master's thesis represents one or more of the following: synthesis of divergent ideas or a scholarly critique of current literature; a creative research activity; or a significant design project, the results of which must be documented in a well written thesis. The thesis should be of publishable quality, and it is recommended that it be submitted to an appropriate conference or journal before the thesis defense.
A thesis must be supervised by a faculty advisor selected by the student. Any full-time faculty member supporting the student's concentration area may serve as the thesis advisor. It is the student's responsibility to either find an advisor willing to provide a thesis topic or willing to supervise a topic of the student's choosing.
Once the student has found an advisor and topic has been selected, the student and advisor should jointly form a thesis supervisory committee. This committee must consist of at least three members, two of whom must represent the concentration area. The advisor chairs this committee. The makeup of this committee must be approved by the Chair of CSE and the Director of the Graduate Division.
The student must provide the members of the committee with a written thesis proposal. Typically this will be done before faculty agrees to serve on the committee.
A thesis is judged by the supervisory committee based upon technical merit, originality, and presentation. The thesis must be presented orally to the committee at a thesis defense. A copy of the thesis must be made available to each member of the committee at least 2 weeks before the planned defense. The defense must be scheduled with the CSE Department office and posted in appropriate bulletin boards. The defense is open to the public.
Master of Science (Major in Software Engineering)
Director: Frank Coyle
Introduction
Software Engineering is the computer science discipline concerned with developing large applications. Software engineering covers not only the technical aspects of building software systems, but also management
The SMU Master's degree program in Software Engineering offers a balanced approach to both the management issues, such as directing programming teams, scheduling and budgeting, and technical expertise necessary to succeed in this critically important field. Many of the courses are based upon those proposed by the Software Engineering Institute, specifically founded by the Department of Defense to assist in the development of a sound foundation for this rapidly emerging field. Centering on the problems of working professionals in this field, the SMU program in Software Engineering serves the needs of both the full- and part-time student.
The program requires 30 hours of course work consisting of 12 hours of core courses and 18 hours of electives.
Admission Requirements
- A minimum of one year of college-level calculus.
- Bachelor's degree in one of the quantitative sciences, mathematics, or computer science, or in one of the engineering disciplines.
- G.P.A. of at least 3.00 out of 4.00 scale in previous undergraduate and graduate study.
Adviser
- A minimum of one year of experience in software development and/or maintenance.
- Satisfactory TOEFL scores for students where English is not the primary language.
Upon entry into the program, students are assigned a faculty advisor. The advisor will help the student in course selection and be available to answer questions about the program.
Degree Requirements
- Thirty term-credit hours of graduate courses with a minimum graduate G.P.A. of 3.00 on a 4.00 scale.
- Satisfactory completion of the core curriculum encompassing
four courses:
CSE 7314 Software Testing and Quality Assurance
CSE 7315 Software Project Planning and Management
CSE 7316 Software Requirements
CSE 7319 Software Architecture and Design - Satisfactory completion of three advanced elective courses
from the following list:
CSE 7312 Systems Engineering for Software Intensive Systems
CSE 7345 Advanced Java Programming
CSE 7348 Distributed Java Enterprise Computing
CSE 7349 XML and the Enterprise
CSE 7359 Software Security
CSE 8312 Software Generation and Maintenance
CSE 8313 Object-Oriented Analysis and Design
CSE 8314 Software Metrics and Quality Engineering
CSE 8315 Software Acquisition Practices, Legal and Economic Issues
CSE 8316 User Interface Design
CSE 8317 Software Reliability and Safety
CSE 8340 Advanced Topics in Software Engineering - Satisfactory completion of three elective courses from available graduate-level course offerings.
Articulation
All students entering the program are expected to possess knowledge in the following core areas:
- Discrete Computational Structures
- Programming Languages
- Data Structures and Algorithms
- Operating Systems
- Computer Architecture and Networks
- Object-Oriented Programming
These core topic areas form the basis of an undergraduate major in computer science. Students entering the program with an undergraduate degree other than computer science will be asked to take an articulation course, CSE 5311, Fundamentals of Computer Science, to satisfy core competency in the above topic areas. CSE 5311 does not count toward the 30 hour degree requirement.
Entering students without a background in object-oriented programming will be asked to take CSE 7345, Advanced Java Programming, as one of their electives. CSE 7345 will count toward the 30 hour degree requirement.
CSE 5311 assumes the ability to program in Java or C++. Students asked to take CSE 5311, who do not have a background in Java or C++ are advised to take CSE 7345 concurrently or prior to taking CSE 5311.
Students without CS undergraduate degrees and asked to CSE 5311 as an articulation course will receive conditional admission to the program. Students must receive a grade of B or better in CSE 5311 to continue in the program.
Doctor of Philosophy (Major in Computer Engineering)
Introduction
Students receiving a Ph.D. in computer engineering are expected to achieve and demonstrate a mastery of the discipline and to significantly advance the state of knowledge through an original research effort.
The graduation requirements fall into the categories of completion of a specified number of graduate credits in appropriate subjects with an acceptable grade point average, demonstration of understanding of the discipline of computer engineering as evidenced by examination, and, completion of a substantial research effort documented in a doctoral dissertation.
All requirements must be completed within 5 years after passing the qualifying exam.
The steps for completion of the doctoral program are:
- Initial advising
- Basic course work preparatory to taking the preliminary counseling examination (PCE)
- Successful completion of Preliminary Counseling Examination
- Selection of a research advisor and supervisory committee
- Advanced course work in the chosen research area and guided thesis research preparatory to taking the qualifying examination
- Successful completion of the qualifying examination as determined by the doctoral advising committee
- Dissertation research supervised by the candidate's doctoral advisor
- Successful defense of the research leading to the Ph.D.
Admission Requirements
Prerequisites to admission to the Ph.D. program are:
- Attainment of a Master of Science degree in computer engineering or a related field including computer science, electrical engineering, mathematics, or physics. In the case of direct admission without a previous Master of Science degree, the Baccalaureate degree must be conferred prior to the time the student begins classes as a graduate student, and the student will fulfill the requirements for and obtain a Master of Science degree and then continue working toward the Ph.D. Also, the student's Grade Point Average must be at least 3.4 on a 4.0-point basis in the student's junior and senior years.
- The student should possess a reasonable level of mathematical maturity.
- All applicants to the Graduate Division must submit an official Graduate Record Examination (GRE) general test score before their application can be considered.
- Foreign students are required to submit their scores on the Test of English as a Foreign Language (TOEFL) or its equivalent in addition to the GRE scores.
Initial Advising
Upon entry into the Ph.D. program, students are assigned a faculty advisor who acts as an academic adviser. The responsibilities of this advisor are to examine the student's prior background and current state of knowledge, and to recommend courses to be taken in preparation for the preliminary counseling examination (PCE).
Credit Requirements
All students entering the program are expected to possess knowledge equivalent to the following CSE courses:
- CSE 1341 Principles of Computer Science
- CSE 2240 Assembly Language Programming and Machine Organization
- CSE 2341 Principles of Computer Science II
- CSE 2353 Discrete Computational Structures
- CSE 3342 Programming Languages
- CSE 3358 Data Structures
- CSE 3381 Digital Logic Design
- CSE 4344 Computer Networks and Distributed Systems I
- CSE 4345 Software Engineering
- CSE 4381 Digital Computer Design
A minimum of 54 graduate credits is required beyond the baccalaureate degree in order to achieve the Ph.D. degree. Of this, a minimum of 27 credit hours must be at the 8000 level. In addition to these 54 hours, 24 hours are required for dissertation credit. Of the 54 graduate credits, a maximum of 30 credit hours may be used if an entering student possesses an M.S. in an appropriate major from another institution. The following core courses must be taken at SMU if the student has not received credit for these at another university:
- CSE 7343 Operating Systems and System Software
- CSE 7344 Computer Networks and Distributed Systems
- CSE 7381 Computer Architecture
- CSE 7387 Digital Logic II
A minor, usually in an area of computer science, electrical engineering or mathematics, of a minimum of 12 credits supporting the chosen research area is required. These courses may be taken in CSE or a department separate from CSE. The minor requirement may be satisfied by transfer credit.
All full-time Ph.D. students in residence at the main campus of SMU may enroll in the CSE seminar class CSE 8198 for one hour of credit per term. Students must have at least 1 hour of credit from CSE 8198 and can have no more than 3 hours that count toward the course work requirement. The CSE 8198 course is graded on a PASS/FAIL basis with a grade of PASS requiring the attendance of at least two-thirds of the CSE departmental seminars and Distinguished Speaker series. The seminar coordinator will keep attendance records.
Grades
No graduate credit is earned for a course in which a grade of less than "C-" is earned. Such courses do, however, count toward the total GPA. In order to graduate, a student must have a Grade Point Average (GPA) of at least 3.0 on a 4.0 scale. If at any point a student's GPA drops below 3.0, the student is placed on academic probation. The student then has one term to raise his/her GPA back up to 3.0 or be dismissed from the program. For part-time students, one term is taken to mean 6 credit hours. It is the policy of the School of Engineering that courses in which an "Incomplete" is granted affect the GPA effective the term in which the Incomplete was granted rather than when it is removed. Therefore, a student should consider himself/herself to be on academic probation if the grade on currently completed work in the course in which the "I" was granted would cause the GPA to drop below 3.0.
Preliminary Counseling Examination
To be eligible for advanced study, a student must demonstrate competence in the basic material in computer engineering by passing the preliminary counseling examination (PCE).
This examination covers computer science and engineering fundamentals and is administered as a combination of an oral and a written examination. Students appearing for the PCE must take both the exams during the same term unless they are reappearing after a partial fail.
The written examination will consist of 6 questions from the following topics (1 from each). A reading list to guide students in preparation for this examination may be obtained from the CSE departmental office.
- Networking
- VLSI and Digital Logic
- Computer Architecture
- Operating Systems and System Software
- Discrete mathematics and Algorithms
- Software Engineering and Programming
The oral examination will cover advanced topics in the following 4 areas. The student will be examined in two areas that are closely associated with his or her intended research.
- Networks
- Hardware
- Software
- Algorithms
A student may pass, conditionally pass, partially pass, or fail the PCE. To pass the written portion, a student must answer at least 4 of the written questions and score 80% overall on four of the questions answered. To pass the oral examination, a simple majority of the faculty members administering the oral examination must vote for passing. A partial pass occurs if the student passes either the written or oral examination, but not both. If the student fails the written part, he has to retake the whole written examination, however, in the oral part if the student passes one of the sections, he is required to retake only the failed part. The faculty will decide upon the conditions in which a candidate must satisfy to change from a "partial pass" to a "pass" for the PCE.
A conditional pass indicates that there are weaknesses in the background of the student that can be overcome by taking specific courses. In this situation the student need not retake the exam, but will be required to take one or more courses and achieve a grade of B or better.
The exam will be administered near the beginning of the Spring and Fall terms. Normally, a student is allowed two attempts at the exam. A third attempt may be allowed by the CSE faculty in exceptional circumstances.
School of Engineering rules require a student in a graduate degree program to be making "reasonable progress toward attainment of a degree." The counseling feature of this exam is to identify any areas of weakness in those fundamental topics nominally considered as basic undergraduate and/or core introductory graduate level material. To be considered to be making reasonable progress, the student should take the core courses CSE 7343, 7344, 7381, and 7387 as early as possible, and take the PCE.
Advanced Study
Advanced study in computer engineering consists of a major concentration area. A concentration area consists of a number of courses that are related to a specific subfield of computer engineering. The major concentration consists of a minimum of 18 credits, no more than 6 of which can be independent study.
Credits earned in the process of preparing for the PCE can be counted toward the credit requirements in a concentration area as long as they don't overlap with CSE 7343, 7344, 7381 and 7387.
The student must file an Advanced Study Degree Plan with the department. No degree plan is accepted until approved by the Chair of the Department. Credits received prior to filing a degree plan are not guaranteed to count toward graduation.
Research Adviser and Supervisory Committee
After passing the PCE, the student must find a research advisor and form a supervisory committee. It is the responsibility of the student to find a faculty member willing to provide a research topic or to supervise a topic of the student's choosing. The research advisor must be one of the full-time faculty members. The research advisor, together with the student, should prepare the Advanced Study Degree Plan discussed above. They should also form the supervisory committee. The supervisory committee is made of at least five members. Three resident tenured or tenure-track faculty are drawn from the student's department and one resident tenured or tenure-track faculty member from each minor field. The chair of the supervisory committee shall be a resident tenured or tenure-track member of the school faculty and shall normally be the dissertation director and a member of the student's department. Thus, a minimum of four members must be resident tenured or tenure-track faculty of Southern Methodist University. The supervisory committee must be submitted to the Chair of the Department and the Director of the Graduate Division for approval.
Qualifying Examination
After considerable progress in the research (usually 40-50% of the thesis work), the student must appear for the qualifying examination. The purpose of the qualifying examination is to determine whether the student is making sufficient progress in the research that will qualify for a Ph.D. thesis. The qualifying examination is administered by the student's supervisory committee. The results of the examination are reported to the Chair of the Department and the Director of the Graduate Division.
The student must provide a written dissertation proposal to the committee. An oral examination is scheduled within two weeks following submission of the proposal. During the oral examination, the student presents his/her dissertation proposal along with a status report and a research plan. The committee will be examining the preparedness of the student as well as quality of the research. A student is allowed two attempts at the qualifying examination. Examination dates are arranged at the discretion of the supervisory committee.
Change of Committee or Concentration
A student may change concentration, research advisor, or supervisory committee at any point, subject to the approval of the Department. Such a change will generally require the formation of a new supervisory committee, and will definitely require the filing of a new advanced study plan. The student must take a qualifying examination in the new concentration area to be admitted to candidacy. In the event that the student changes concentration after being admitted to candidacy, the candidacy is revoked and the student must pass the qualifying examination in the new concentration. Two attempts are allowed for a student in this position. A student may also change areas before being admitted to candidacy. In this event, it is possible that one or more unsuccessful attempts will have been made to pass the qualifying examination. The student may, at the discretion of the chair of the Department, be allowed two attempts in the new concentration, but under no circumstances will more than three attempts be allowed at the exam. It is also possible that a student will change research advisor or composition of the supervisory committee, while still retaining the same concentration areas. Such changes may be made only with the approval of the Department. If the research advisor is changed, the new research advisor may, at his/her discretion, require a new qualifying examination. In addition, if the makeup of the supervisory committee changes substantially, the Department may require a new qualifying examination to be taken with the newly constituted committee.
Doctoral Dissertation
The most clearly distinguishing characteristic of a program leading to the Ph.D. degree is the requirement that the candidate write a dissertation embodying the results of a significant and original investigation. The dissertation must make a real contribution to the engineering discipline, and it is expected to be a mature and competent piece of writing. The work reported in the dissertation may be either basic scientific research, engineering research, or creative design.
The typed original and five copies of the dissertation, each including a copy of the abstract, must be delivered, together with two extra copies of the abstract and one extra title page, to the director of the Graduate Division before the examination period in a regular term and before examinations in a summer term. Upon the successful completion of the dissertation defense, the original abstract must be signed by the dissertation advisor, and the original half-title page of the dissertation must by signed by all of the CSE faculty members attending the dissertation defense.
A copy of the bound dissertation will be sent to the student as soon as it is available following successful completion of the dissertation defense.
Dissertation Defense (Final Examination)
Upon completion of all other requirements, a dissertation defense of the candidate will be announced, registered with the Graduate Division, and subsequently conducted by the supervisory committee. The candidate must make six unbound copies of his dissertation available to the Graduate Division for distribution to the members of the supervisory committee at least two weeks in advance of the dissertation defense. This defense, which is conducted orally, must enable the supervisory committee to satisfy itself that the dissertation is an original piece of work, either in research or creative design, that it has been carried out in keeping with the highest standards of investigation and reporting, and that it makes a contribution to knowledge that is of value to the engineering profession or scientific community. The defense must be scheduled with the CSE departmental office and posted in the School of Engineering. This defense is open to the public, with the possible exception of a period during which general questions in computer science and engineering may be asked that is open only to committee members and CSE faculty. Satisfactory performance on this defense constitutes the last requirement to be met for the Ph.D. degree.
Doctor of Philosophy (Major in Computer Science)
Introduction
Students receiving a Ph.D. in computer science are expected to achieve and demonstrate a mastery of the discipline and to significantly advance the state of knowledge through an original research effort.
The graduation requirements fall into the categories of completion of a specified number of graduate credits in appropriate subjects with an acceptable grade point average, demonstration of understanding of the discipline of computer science as evidenced by examination, and completion of a substantial research effort documented in a doctoral dissertation.
All requirements must be completed within 5 years after passing the qualifying exam.
The steps for completion of the doctoral program are:
- Initial advising
- Basic course work preparatory to taking the preliminary counseling examination (PCE)
- Successful completion of Preliminary Counseling Examination
- Selection of a research advisor and supervisory committee
- Advanced course work in the chosen research area and guided thesis research preparatory to taking the qualifying examination
- Successful completion of the qualifying examination as determined by the doctoral advising committee
- Dissertation research supervised by the candidate's doctoral advisor
- Successful defense of the research leading to the Ph.D.
Admission Requirements
Prerequisites to admission to the Ph.D. program are:
- Attainment of a Master of Science degree in computer science or a related field including computer engineering, electrical engineering, mathematics, or physics. In the case of direct admission without a previous Master of Science degree, the Baccalaureate degree must be conferred prior to the time the student begins classes as a graduate student and the student will fulfill the requirements for and obtain a Master of Science degree and then continue working toward the Ph.D. Also, the student's Grade Point Average must be at least 3.4 on a 4.0-point basis in the student's junior and senior years.
- The student should possess a reasonable level of mathematical maturity.
- All applicants to the Graduate Division must submit an official Graduate Record Examination (GRE) general test score before their application can be considered.
- Foreign students are required to submit their scores on the Test of English as a Foreign Language (TOEFL) or its equivalent in addition to the GRE scores.
Initial Advising
Upon entry into the Ph.D. program, students are assigned a faculty advisor who acts as an academic advisor. The responsibilities of this advisor are to examine the student's prior background and current state of knowledge, and to recommend courses to be taken in preparation for the preliminary counseling examination (PCE).
Credit Requirements
All students entering the program are expected to possess knowledge equivalent to the following CSE courses:
- CSE 1341 Principles of Computer Science
- CSE 2240 Assembly Language Programming and Machine Organization
- CSE 2341 Principles of Computer Science II
- CSE 2353 Discrete Computational Structures
- CSE 3342 Programming Languages
- CSE 3358 Data Structures
- CSE 3381 Digital Logic Design
- CSE 4345 Software Engineering
- CSE 4381 Digital Computer Design
A minimum of 54 graduate credits is required beyond the baccalaureate degree in order to achieve the Ph.D. degree. Of this, a minimum of 27 credit hours must be at the 8000 level. In addition to these 54 hours, 24 hours are required for dissertation credit. Of the 54 graduate credits, a maximum of 30 credit hours may be used if an entering student possesses a M.S. in an appropriate major from another institution. The following core courses must be taken at SMU if the student has not received credit for these at another university:
- CSE 7330 File Organization and Database Management
- CSE 7343 Operating Systems and System Software
- CSE 7350 Algorithm Engineering
- CSE 7381 Computer Architecture
A minor, usually in an area of computer engineering, electrical engineering or mathematics, of a minimum of 12 credits supporting the chosen research area is required. These courses may be taken in CSE or a department separate from CSE. The minor requirement may be satisfied by transfer credit.
All full-time Ph.D. students in residence at the main campus of SMU are required to enroll in the CSE seminar class CSE 8198 for one hour of credit per term. Students must have at least 1 hour of credit from CSE 8198 and can have no more than 3 hours that count toward the course work requirement. The CSE 8198 course is graded on a PASS/FAIL basis with a grade of PASS requiring the attendance of at least two-thirds of the CSE departmental seminars and Distinguished Speaker series. The seminar coordinator will keep attendance records.
Grades
No graduate credit is earned for a course in which a grade of less than "C-" is earned. Such courses do, however, count toward the total GPA. In order to graduate, a student must have a Grade Point Average (GPA) of at least 3.00 on a 4.00 scale. If at any point a student's GPA drops below 3.00, the student is placed on academic probation. The student then has one term to raise his/her GPA back up to 3.0 or be dismissed from the program. For part-time students, one term is taken to mean 6 credit hours. It is the policy of the School of Engineering that courses in which an "Incomplete" is granted affect the GPA effective the term in which the Incomplete was granted rather than when it is removed. Therefore, a student should consider himself/herself to be on academic probation if the grade on currently completed work in the course in which the "I" was granted would cause the GPA to drop below 3.00.
Preliminary Counseling Examination
To be eligible for advanced study, a student must demonstrate competence in the basic material in computer science by passing the preliminary counseling examination (PCE).
This examination covers computer science and engineering fundamentals and is administered as a combination of an oral and a written examination. Students appearing for the PCE must take both the exams at the same term unless they are reappearing after a partial fail.
The written examination will consist of 6 questions from the following topics (1 from each). A reading list to guide students in preparation for this examination may be obtained from the CSE departmental office.
- Networking
- VLSI and Digital Logic
- Computer Architecture
- Operating Systems and System Software
- Discrete Mathematics and Algorithms
- Software Engineering and Programming
The oral examination will cover advanced topics in the following 4 areas. The student will be examined in two areas that are closely associated with his or her research.
- Networks
- Hardware
- Software
- Algorithms
A student may pass, conditionally pass, partially pass, or fail the PCE. To pass the written portion, a student must answer at least 4 of the written questions and score 80% overall on four of the questions answered. To pass the oral examination, a simple majority of the faculty members administering the oral examination must vote for passing. A partial pass occurs if the student passes either the written or oral examination, but not both. If the student fails the written part, he has to retake the whole written examination, however, in the oral part if the student passes one of the sections, he is required to retake only the failed part. The faculty will decide upon the conditions in which a candidate must satisfy to change from a "partial pass" to a "pass" for the PCE.
A conditional pass indicates that there are weaknesses in the background of the student that can be overcome by taking specific courses. In this situation the student need not retake the exam, but will be required to take one or more courses and achieve a grade of B or better.
The exam will be administered near the beginning of the Spring and Fall terms. Normally, a student is allowed two attempts at the exam. A third attempt may be allowed by the CSE faculty in exceptional circumstances.
School of Engineering rules require a student in a graduate degree program to be making "reasonable progress toward attainment of a degree." The counseling feature of this exam is to identify any areas of weakness in those fundamental topics nominally considered as basic undergraduate and/or core introductory graduate level material. To be considered to be making reasonable progress, the student should take the core courses CSE 7330, 7343, 7350, and 7381, as early as possible, and take the PCE.
Advanced Study
Advanced study in computer science consists of a major concentration area. A concentration area consists of a number of courses that are related to a specific subfield of computer science. The major concentration consists of a minimum of 18 credits, no more than 6 of which can be independent study.
Credits earned in the process of preparing for the PCE can be counted toward the credit requirements in a concentration area as long as they don't overlap with CSE 7330, 7343, 7350, and 7381.
The student must file an Advanced Study Degree Plan with the department. No degree plan is accepted until approved by the Chair of CSE. Credits received prior to filing a degree plan are not guaranteed to count toward graduation.
Research Adviser and Supervisory Committee
After passing the PCE, the student must find a research advisor and form a supervisory committee. It is the responsibility of the student to find a faculty member willing to provide a research topic or to supervise a topic of the student's choosing. The research advisor must be one of the full-time faculty members. The research advisor, together with the student, should prepare the Advanced Study Degree Plan discussed above. They should also form the supervisory committee. The supervisory committee is made of at least five members. Three resident tenured or tenure-track faculty are drawn from the student's department and one resident tenured or tenure-track faculty member from each minor field. The chair of the supervisory committee shall be a resident tenured or tenure-track member of the school faculty and shall normally be the dissertation director and a member of the student's department. Thus, a minimum of four members must be resident tenured or tenure-track faculty of Southern Methodist University. The supervisory committee must be submitted to the Chair of CSE and the Director of the Graduate Division for approval.
Qualifying Examination
After considerable progress in the research (usually 40-50% of the thesis work), student must appear for the qualifying examination. The purpose of the qualifying examination is to determine whether the student is making sufficient progress in the research that will qualify for a Ph.D. thesis. The qualifying examination is administered by the student's supervisory committee. The results of the examination are reported to the Chair of CSE and the Director of the Graduate Division.
The student must provide a written dissertation proposal to the committee. An oral examination is scheduled within two weeks following submission of the proposal. During the oral examination, the student presents his/her dissertation proposal along with a status report and a research plan. The committee will be examining the preparedness of the student as well as quality of the research. A student is allowed two attempts at the qualifying examination. Examination dates are arranged at the discretion of the supervisory committee.
Change of Committee or Concentration
A student may change concentration, research advisor, or supervisory committee at any point, subject to the approval of the Department. Such a change will generally require the formation of a new supervisory committee, and will definitely require the filing of a new advanced study plan. The student must take a qualifying examination in the new concentration area to be admitted to candidacy. In the event that the student changes concentration after being admitted to candidacy, the candidacy is revoked and the student must pass the qualifying examination in the new concentration. Two attempts are allowed for a student in this position. A student may also change areas before being admitted to candidacy. In this event, it is possible that one or more unsuccessful attempts will have been made to pass the qualifying examination. The student may, at the discretion of the Department, be allowed two attempts in the new concentration, but under no circumstances will more than three attempts be allowed at the exam. It is also possible that a student will change research advisor or composition of the supervisory committee, while still retaining the same concentration areas. Such changes may be made only with the approval of the Department. If the research advisor is changed, the new research advisor may, at his/her discretion, require a new qualifying examination. In addition, if the makeup of the supervisory committee changes substantially, the Department may require a new qualifying examination to be taken with the newly constituted committee.
Doctoral Dissertation
The most clearly distinguishing characteristic of a program leading to the Ph.D. degree is the requirement that the candidate write a dissertation embodying the results of a significant and original investigation. The dissertation must make a real contribution to the computer science discipline, and it is expected to be a mature and competent piece of writing. The work reported in the dissertation may be either basic scientific research, engineering research, or creative design.
The typed original and five copies of the dissertation, each including a copy of the abstract, must be delivered, together with two extra copies of the abstract and one extra title page, to the director of the Graduate Division before the examination period in a regular term and before examinations in a summer term. Upon the successful completion of the dissertation defense, the original abstract must be signed by the dissertation advisor, and the original half-title page of the dissertation must by signed by all of the CSE faculty members attending the dissertation defense.
A copy of the bound dissertation will be sent to the student as soon as it is available following successful completion of the dissertation defense.
Dissertation Defense (Final Examination)
Upon completion of all other requirements, a dissertation defense of the candidate will be announced, registered with the Graduate Division, and subsequently conducted by the supervisory committee. The candidate must make six unbound copies of his dissertation available to the Graduate Division for distribution to the members of the supervisory committee at least two weeks in advance of the dissertation defense. This defense, which is conducted orally, must enable the supervisory committee to satisfy itself that the dissertation is an original piece of work, either in research or creative design, that it has been carried out in keeping with the highest standards of investigation and reporting, and that it makes a contribution to knowledge that is of value to the computer profession or scientific community. The defense must be scheduled with the CSE departmental office and posted in the School of Engineering. This defense is open to the public, with the possible exception of a period during which general questions in computer science and engineering may be asked that is open only to committee members and CSE faculty. Satisfactory performance on this defense constitutes the last requirement to be met for the Ph.D. degree.
Certificate Programs
Admission Requirements
- A bachelor's degree in one of the quantitative sciences, mathematics, computer science, computer engineering, or one of the other engineering disciplines from a U.S. college or university accredited by a regional accrediting association or completion of an international degree that is equivalent to a U.S. bachelor's degree from a college or university of recognized standing.
- A minimum G.P.A. of 3.0 on 4.0 scale in previous undergraduate and graduate study.
- Working knowledge of at least one programming language.
- A minimum of one year of experience in software development and maintenance, or computer networks.
- wStudents not meeting these requirements may be admitted on a conditional basis and required to take articulation (bridging) courses (for undergraduate credit).
Certificate Requirements
Completion of the courses specified for the individual certificate with a grade of "B" or better.
Software Engineering Certificate Program
The Software Engineering certificate program presents a series of steps for acquiring basic software engineering knowledge and skills, followed by education in one or more specialty areas. Each certificate comprises selected Master's level courses from the software engineering curriculum that can form the foundation of a later Master's degree.
Certificate in Software Engineering Fundamentals
- CSE 7314 Software Testing and Quality Assurance
- CSE 7315 Software Project Planning and Management
- CSE 7316 Software Requirements
- CSE 7319 Software Architecture and Design
Software Requirements Engineering: Completion of Fundamentals plus:
- CSE 7312 Software Systems Engineering
- CSE 8313 Object-Oriented Analysis and Design
Certificate in Software Design Engineering: Completion of Fundamentals plus:
- CSE 8313 Object-Oriented Analysis and Design
- CSE 8316 User Interface Design
Certificate in Software Construction Engineering: Completion of Fundamentals plus:
- CSE 8312 Software Generation and Maintenance
- CSE 8313 Object-Oriented Analysis and Design
Certificate in Software Testing and Quality Engineering: Completion of Fundamentals plus:
- CSE 8314 Software Metrics and Quality Engineering
- CSE 8317 Software Reliability and Safety
Certificate in Distributed Computing Technologies: Completion of Fundamentals plus:
- CSE 7346 Java Distributed Enterprise Computing
- CSE 7347 XML and the Enterprise
Certificate in Software Management: Completion of Fundamentals plus:
- CSE 8314 Software Metrics and Quality Engineering
- CSE 8315 Software Acquisition Practices, Legal, and Economic Issues
Certificate Program in Computer Security and Information Assurance
The Computer Security and Information Assurance Certificate program is designed for the computer and network professional seeking education to support focused career objectives in computer security and information assurance. A student will earn a Certificate in Computer Security and Information Assurance upon completion of three courses from a list of five.
Certificate in Computer Security and Information Assurance
Any three courses from the following list:
- CSE 7339 Computer System Security
- CSE 7349 Data and Network Security
- CSE 7359 Software Security
- CSE 8349 Advanced Network and System Security
- CSE 8352 (EE 8372) Cryptography and Data Security
The Courses (CSE)
7312. Software Systems Engineering. The course focuses on the engineering of complex systems that have a strong software component. For such systems, software often assumes functions previously allocated to mechanical and electrical subsystems, changing the way systems engineers must think about classical systems issues. The course provides a framework for addressing systems engineering issues by focusing on the Software Engineering Institute's Systems Engineering Capability Maturity Model (SE-CMM). Topics include deriving and allocating requirements, system and software architectures, integration, interface management, configuration management, quality, verification and validation, reliability, and risk.
7314. 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.
7315. Software Project Planning and Management. The issues associated with the successful management of a software development project are addressed. This includes planning, scheduling, tracking, cost and size, estimating, risk management, configuration, management quality, engineering and process improvement. The course is centered on the concept of a Software Engineering Process and includes discussion of life cycle models for software development. The SEI software process capability maturity model (CMM) and other process standards are included.
7316. 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.
7317 (MATH 5317). Mathematical Software. Design and construction of numerical and symbolic software as stand-alone segments, packages and libraries. Examples: linear algebra, quadrature, optimization; MATLAB and MAPLE; NAG and IMSL libraries. Impact of computer architecture. Prerequisites: MATH 3315/CSE 3365 or MATH 5315/CSE 7365 or MATH 5316/CSE 7366, a programming course (e.g., C or FORTRAN), and some knowledge of linear algebra, or permission of instructor.
7319. Software Architecture and Design. Successful 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.
7320. 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: CSE 3342 and CSE 3358.
7330. 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: CSE 3358.
7339. 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.
7341. 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: CSE 3342 and 3358.
7342. Concepts of Language Theory and Their Applications. Introduction to formal languages and their relation to automata. Introduction to denotational and operational semantics. Applications of formal semantics to the design and specification of programming languages and programming language processors including computer architectures. The predicate calculus, logic programming, and axiomatic semantics. Application of axiomatic semantics to the verification of programs. 1 TCH Design. Prerequisite: CSE 3342 or permission of instructor.
7343. Operating Systems and System Software. Theoretical and practical aspects of operating systems: overview of system software, time-sharing and multiprogramming operating systems, network operating systems and the Internet, virtual memory management, interprocess communication and synchronization, file organization, and case studies. Prerequisite: CSE 3358.
7344. 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.
7345. 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 A grade of C- or better in CSE 3342 or permission of instructor.
7346. 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 of equivalent.
7347. 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. Prerequisites: An understanding of object-oriented concepts; familiarity with Java and/or C++.
7348. 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 World Wide Web, internetworking over new network technologies. Prerequisites: CSE 7343 and C programming.
7349. 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.
7350. 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. Prerequisites: CSE 3353 and CSE 3358 (for non-CSE graduate students: CSE 3358).
7359. 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. Prerequisites: Programming experience in Java and/or C++.
7365 (MATH 5315). Introduction to Numerical Analysis. Numerical solution of linear and nonlinear equations, interpolation and approximation of functions, numerical integration, floating point arithmetic, and the numerical solution of initial valve problems in ordinary differential equations. Student use of the computer is emphasized. Prerequisites: FORTRAN and MATH 2343 or 3315.
7366 (MATH 5316). Numerical Linear Algebra. This course studies the efficient solution of linear systems by both direct and interactive methods. The concept of elementary matrix transformations is used to provide a unified treatment of direct methods. Stationary and conjugate direction methods are developed for efficiently solving sparse linear systems. Prerequisites: FORTRAN or MATLAB, MATH 3353, MATH 3315, or MATH 5315.
7370. Probability and Statistics for Scientists and Engineers. Introduction to fundamentals of probability and distribution theory, statistical techniques used by engineers and physical scientists. Examples of tests of significance, operating characteristic curves, tests of hypothesis about one and two parameters, estimation, analysis of variance, and the choice of a particular experimental procedure and sample size. Prerequisite: MATH 2339 or equivalent.
7376 (EETS 7301). 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 antennas, modems and interfaces, and digital transmission systems. TI carriers, digital microwave, satellites, fiber optics and SONET, and Integrated Services Digital Networks.
7380. 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 (FPGAs) throughout the course. Prerequisites: C- or better in CSE 3381 and C- or better in CSE 3358.
7381. Computer Architecture. This is an advanced course introducing students to the state-of-the-art in uniprocessor computer architecture. The main focus is on the quantitative analysis and cost performance tradeoffs in instruction-set, pipeline, and memory design. Description of real systems and performance data are also presented, providing qualitative case studies that complement the quantitative analysis. Topics covered include quantitative performance measures, pipelines, instruction-level parallelism, memory hierarchies, input/output, networks, and parallel processors. Prerequisites: CSE 4381 and experience with both a high-level language and a hardware description language.
7382. 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: CSE 3358 or equivalent.
7385. Microprocessor Architecture and Interfacing. Emphasizes the design of Intel-based microprocessor computer systems. The course starts with the presentation of Intel microprocessors and continues with the design of a personal computer system with hierarchical memory, input-output peripherals, and industry-standard bus interfaces (ISA, EISA, VLB, and PCI). In addition to the hardware design techniques, this course has a laboratory and design projects in which students learn to use state-of-the-art CAD tools and laboratory instruments for hardware design, simulation, implementation, and debugging. Prerequisites: CSE 3381 and assembly language programming.
7387. Digital Logic 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.
7(1-3)9(0-4). Special Topics. Individual or group study of selected topics in computer science. Prerequisite: Permission of instructor.
8098. Computer Science Seminar. The course consists of the seminars and colloquia given by the resident faculty and invited guests in various specialized, as well as general, topics in computer science.
8198. Computer Science Seminar. The course consists of the seminars and colloquia given by the resident faculty and invited guests in various specialized, as well as general, topics in computer science.
8312. Software Generation and Maintenance. Techniques for generating software and maintaining revisions to existing software will be examined. Topics include alternatives to coding, the use of program generators and very high-level languages, CASE tool, component re-use, and the role of standards in the generation of software. Also covered are issues related to maintenance as a part of software evolution, the impact of the design process on long-term software maintainability, software re-engineering, and the planning of release cycles.
8313. Object-Oriented Analysis and Design. Object-oriented analysis and design is essential in developing high-quality object-oriented systems. The course will provide an overview of object-oriented analysis and design by integrating the work of Booch, Rumbaugh, Jacobson, and Wirfs-Brock. Topics will include use-case analysis, responsibility-driven design, object modeling, entity-relationship modeling, and the design notation of the Unified Modeling Language (UML). Additional topics will include object-oriented class libraries, object-oriented databases, and the Common Object Request Broker Architecture (CORBA).
8314. Software Metrics and Quality Engineering. Techniques of software quality engineering with emphasis on the role of metrics are addressed. The approach is drawn from practical experience and uses many examples from industry. The psychological and behavioral aspects of quality and quality assurance are included. Metrics and quality are presented in relationship to the software process and software process maturity models. Selection of quality metrics is addressed in terms of the goal/question/metric paradigm as well as various quality models. Methods of storing data for historical purposes, analyzing, and presenting data to others are included.
8315. Software Acquisition Practices, Legal and Economic Issues. Issues relating to software procurement, contract law, specification and control of product processes are examined. Topics include factors that affect cost, cost estimation, cost/benefit analysis, risk analysis, and legal implications with respect to ownership and use. Techniques and models of cost estimation are studied in detail.
8316. User Interface Design. Design methodologies for user interfaces. Topics include life cycles for user interface development, human factors issues, prototyping, user analysis, and evaluation and design techniques. Students will perform the analysis, design, and evaluation of a user interface through two iterations.
8317. Software Reliability and Safety. In-depth study of techniques for ensuring software reliability and safety. Topics include software reliability engineering, software safety engineering, and recent developments in those areas. Reliability concepts applied to the software domain and safety concepts applied to computer-intensive systems will be discussed. Specific techniques such as software reliability models and analysis methods, operational profiles, safety and hazard analysis using fault trees and event trees, and formal verification for safety-critical software systems will be covered.
8320. Knowledge-Intensive Problem Solving. Focusing on higher-level artificial intelligence techniques for problem-solving guided by domain-specific knowledge. These techniques will be discussed via study of planning systems, heuristic rule-based systems, model-based systems, and learning systems. Prerequisite: CSE 7320.
8321. Machine Learning and Neural Networks. Introduction to the principles and motivation behind forms of machine learning, including neural networks. Survey of important topics and current areas of research, including back propagation, Boltzmann machines, clustering, inductive learning, genetic learning, and analogy. Strengths and weaknesses of each type of learning algorithm. Prerequisite: CSE 7320 or permission of instructor.
8322. Natural Language Processing and Internet Applications. This course covers state-of-the-art methods for natural language processing. After an introduction to the basics of syntax, semantic, and discourse analysis, the focus shifts to the integration of these modules into complex natural-language processing systems. In addition to natural language understanding, the course presents advanced material on lexical knowledge acquisition, natural language generation, machine translation, and parallel processing of natural language. Prerequisite: CSE 7320.
8325. Logic Programming. Explores logic-based computing and logic programming. It introduces fundamentals of logic programming and covers basic techniques for solving problems in Prolog, including nondeterministic programming, incomplete data structures, definite clause grammars, and meta interpreters. Implementation of a logic programming system is examined as a generalization of both traditional programming language systems and traditional databases will be discussed. Prerequisites: CSE 3342 and 3358.
8330. Advanced Database Management Systems. An extensive investigation of distributed databases and implementation issues. Included are design, data replication, concurrency control, and recovery. Implementation project included. Prerequisite: CSE 7330.
8331. Data Mining. This course introduces various data mining concepts and algorithms from a database perspective. A historical background and related topics are first discussed, followed by an overview of data mining core topics (classification, clustering, association rules) and more advanced topics (temporal and spatial data, scalability and parallelization, and outliers). Topics discussed include linear regression, distance measure, decision trees, and neural nets. Case studies and projects are included. Prerequisite: CSE 7330.
8337. Information Retrieval. Examination of techniques used to store and retrieve unformatted/textual data. Examination of current research topics of data mining, data warehousing, digital libraries, hypertext, and multimedia data. Prerequisite: CSE 7330.
8340. Advanced Topics in Software Engineering. In-depth study of specific topics in software engineering techniques, methodologies, and issues. Topics will change from term to term and will include advanced software reliability models, software development process models, advanced object-oriented design, and cleanroom software engineering.
8343. Advanced Operating Systems. Theoretical and practical aspects of operating system design, implementation, system organization, and resource management; emphasis on distributed operating systems, and advanced research issues. Prerequisite: CSE 7343.
8344. Computer Networks. Fundamentals of computer communications networks. Introduction to computer networking elements, communications architectures and protocols. Case studies. Design and analysis of computer networks: topology, LAN/MAN technology network interface, LAN/MAN performance internetworking, and network management. Prerequisite: CSE 7343. CSE 7376 and 7381 recommended.
8349. Advanced Network and System Security. In-depth analysis of secure networks and systems, security audit, intrusion detection and prevention, storage security, firewall configurations, security log analysis, DMZs, Honey pots, malicious codes, mobile and grid computing security.
8350. Algorithms II. Analysis of dynamic data structures, lower-bound theory, problem equivalence and reducibility, complexity theory, probabilistic algorithms, machine models of sequential and parallel computation, parallel algorithms. Prerequisite: CSE 7350.
8351. Computer Arithmetic. Number presentation and algorithms for arithmetic unit design, redundant radix representation, highly parallel add/multiply/divide/square root algorithms, IEEE floating-point standard, directed roundings, base conversion, VLSI floating-point units, vector and matrix arithmetic, residue arithmetic, rational arithmetic, online arithmetic. Prerequisites: Knowledge of computer organization, data structures, and algorithms, e.g. CSE 3358.
8352 (EE 8372). Cryptography and Data Security. Cryptography is the study of mathematical systems for solving two kinds of security problems on public channels: privacy and authentication. Covers the theory and practice of both classical and modern cryptographic systems. The fundamental issues involved in the analysis and design of a modern cryptographic system will be identified or studied. Prerequisite: STAT (CSE) 4340 or equivalent.
8354. Computational Biology. Math and computer science have changed the face of modern biological sciences which influenced a whole new field of Computational Biology (also related terms: computational molecular biology and bioinformatics). Computational biology derives knowledge from algorithmic treatment and computer analysis of biological data. The aim of the course is to give an introduction to the basic computational methods and algorithms used for the problems arising in biology. It covers sequence alignment problems using dynamic programming, hidden Markov models, suffix trees, and heuristics. It also focuses on the computational approaches to genetic and physical mapping, DNA sequencing, assembly, gene prediction, protein structure and folding, motif finding, gene regulatory networks and pathways, and evolutionary trees. Prerequisite: CSE 3358 or permission of instructor.
8355. Graph Theory: Algorithms and Applications. Development of algorithmic and computational aspects of graph theory, with application of concepts and techniques to solving problems of: connectivity, set covering, scheduling, shortest paths, traveling salesmen, network flow, matching, and assignment. Prerequisite: CSE 7350 or permission of instructor.
8357 (EE 8357). Design of CAD/CAE Tools. Concentrates on algorithm and software development techniques for design and implementation of CAD/CAE tools. Development of tools for VLSI and digital systems design is emphasized. Topics include database development to support design environments and representation, characteristics and design of synthesis, static analysis, and dynamic analysis tools. Human interface issues and CAD/CAE output formats are also covered. Prerequisites: EE 7356 or experience with design using CAD/CAE tools and programming skills.
8358. Information Structures. A graduate-level data structures course which provides students a detailed hands-on examination of advanced data structures and their usage. The first 6 weeks cover advanced data structures such as skip-lists, heaps, has tables and search structures and apply them in large problem solving systems. The following 5 weeks cover classes, inheritance, and polymorphism in large programming projects, as well as templates, and introduces the Standard Template Library (STL). The last 3 weeks cover TCL and TK and teach techniques of building interfaces using TCL and TK. Extensive programming assignments in C and C++ are included. Prerequisites: CSE 3358 and CSE 3342.
8375 (EE 8375). Coding Theory and Applications. Information theory concepts: measure of information, mutual information, entropy. Algebra: groups, rings, finite fields, algebra of polynomials. Algebraic codes: linear codes, cyclic codes, BCH codes. Fire codes: encoding/decoding logic. Arithmetic codes: AN codes, separate adder and checker. Applications to CSE 8320.
8377. Fault-Tolerant Computation. Faults, errors, and failures, hardware fault tolerance, reliability, availability, reliable distributed systems, checkpointing and recovery, atomic actions data and process resiliency, software fault tolerance, case studies. Prerequisite: Permission of instructor.
8380. Parallel and Distributed Processing. Parallel and distributed processing is a fast-growing technology that permeates many aspects of computer science and engineering. This course emphasizes the strong interaction between parallel and distributed algorithms, architectures, and software. Topics include parallelism analysis in numeric and non-numeric algorithms, array processors, associative processors, multiprocessors, marker-propagation networks, distributed operating systems, networks of workstations, Internet computing, and case studies. Prerequisites: Computer architecture and a high-level programming language.
8383. Advanced Computer Architecture. Advanced topics in computer architecture and parallel processing. Prerequisites: CSE 7381 and 7380.
8386. Testing of VLSI Circuits. The objective of testing is to verify that the manufactured custom chips function correctly according to their specifications. Testing process includes fault modeling, mainly automated simulation, test pattern generation, and testable and self-testing design synthesizing. Structured chips such as memories, PLAs, FPGAs are also tested for correctness. This course will survey the state-of-the-art test approaches used in industry and in other research environments. Prerequisite: Digital Logic Design, Data Structures, Algorithms.
8387. CAD Methods in VLSI. This course will concentrate on advanced topics in switching theory and CAD methods. The underlying theory of the course topics is emphasized in addition to their application. Particular emphasis is placed on the representation and properties of discrete functions and the syntheses and verification problems. In addition to the prerequisites, students are expected to have proficiency using a modern programming language. Previous exposure to an HDL will also be highly beneficial, but it is not a strict prerequisite.
8388. Embedded Computing System Design. Embedded systems are generally part of complex systems. An embedded system carries out the computational subtasks of the main system. The computing systems within home appliances and automobiles are examples of such systems. This course will cover the process of embedded computing system design under mainly, cost, power, performance, and several system-specific restrictions.
8389. Foundations of Formal Verification and Validation. Detecting and correcting integrated circuit design errors before device fabrication is an increasingly complex and costly problem. A large amount of effort is expended in the design verification and validation process in industry. This course will survey the most common approaches used in industry and in other research environments. Tradeoffs between formal methods and validation techniques will be emphasized and commercial state-of-the-art software tools will be used. Topics to be considered are equivalence checking, model checking, theorem proving and advanced topics in validation and simulation. Prerequisite: Programming Languages, Data Structure, Digital Logic Design II, Computer Architecture or Consent of Instructor.
8(0-4)90, 8(0-4)93. Graduate Seminar. Special and intensive study of selective topics in computer science aimed at encouraging students to follow recent developments through regular critical reading of the literature.
8(1-4)94, 8(1-4)95. Selected Problems. Independent investigation of topics in computer science approved by the department chair and by the major professor. Prerequisite: 12 term hours of graduate credit.
7(0,1,2,3,6)96. Master’s Thesis. Variable credit, but not more than six term hours in a single term, and not more than four in each summer term. Registration in several sections may be needed to obtain the desired number of thesis hours. For example, four term hours of thesis would require registration in CSE 7396 and CSE 7196.
8(0,1,2,3,6)90. Dissertation. Variable credit, but nor more than 15 term hours in a single term and not more than 10 term hours in the summer terms. Registration in several sections may be needed to obtain the desired number of dissertation hours. For example, 12 term hours of dissertation would require registration in CSE 8390 and 8990.


