Contents

Faculty Research

 

Undergraduate Program

We believe that our Department has an excellent undergraduate program. We have graduated many brilliant and well-trained students who have gone on to graduate work at top universities (MIT, Stanford, CMU, and other such universities). In the late 1990’s, we grew the size of our undergraduate program to nearly 2000 CS majors to satisfy the demand from students and need by local industry. Although the sizes of our classes have increased, they are still small compared to that of some other universities, where a 150 student senior level operating systems course in not uncommon.

Curriculum

 

The goal of our undergraduate program is to give the student a broad based background in software and software systems. Students begin the program with a sequence of three programming courses which take them from fundamental procedural programming constructs through object-oriented programming and basic data structures such as stacks, queues, linked lists, and binary search trees. Along with these beginning programming courses, students must take Calculus I, Calculus II, and Discrete Mathematics so that they will have a firm grounding in basic mathematics. Subsequently, students take two more math courses which have Calculus II or higher as a prerequisite, one of which must be a Statistics course. At the junior level, all students must take Computer Organization, Organization of Programming Languages, and Algorithms.

 

It is only after completing these specified courses that students begin to have a choice of courses. Students must choose at least five courses from at least three areas. Courses offered regularly include:

 

Systems and Networks

Computer Architecture

Operating Systems

Computer and Network Security

Computer Networks

Information Processing

Data Structures

Database Design

Artificial Intelligence

Image Processing and Computer Vision

Graphics

Programming Languages and Software Engineering

Theory of Language Translation

Programming Language Technologies and Paradigms

Human Factors

Software Engineering

Algorithms and Theory

Design and Analysis of Algorithms

Elementary Theory of Computation

Cryptography

Numerical Analysis

Introductory Numerical Analysis

Advanced Computational Methods

 

We have just approved a proposal for a complete overhaul of our introductory programming courses. The new proposal is in the appendix, and the new course sequence will start in the Spring of 2004.

Advising

The goal of the advising program is for each student to have a schedule which allows him/her to be challenged but comfortable. Advising begins with the orientation sessions a student attends the summer before he/she first comes to Maryland. Students are placed in the beginning courses using a combination of Computer Science and Mathematics Advanced Placement Examinations and Department placement examinations administered in the summer orientation sessions.

 

Once a student is a Computer Science major at Maryland, he/she must see an advisor each semester. This policy is enforced by our registration system, which requires an advisor's electronic permission stamp for a student to register for the next semester.

 

The Department’s Undergraduate Education Office coordinates all advising for undergraduates in Computer Science. Students who are taking 100 level Computer Science courses go to our Dean's Office for advising. In the Dean's Office there are five or so professional advisors who work closely with the students on fundamental studies requirements and choosing beginning computer science and mathematics courses. Once students reach the 200-level of Computer Science courses, they come to the Department for advising. The ten instructors for the Department's lower level courses, all of whom have at least a Master's degree, are also the advisors for the Department.

 

Accreditation

Like many nationally ranked computer science departments, we have chosen not to go through a formal accreditation process. The process itself takes at least a couple of years and significant effort. The curriculum for computer science changes so rapidly that the curriculum presented during the accreditation process is out of date during or soon after the process. For this reason we have chosen not to spend our effort on accreditation but on the program and its students.

 

Teaching Load

Instructors and lecturers teach three courses per semester and advise four hours per week. They have no research requirements. Professors teach one course per semester (graduate or undergraduate), typically teaching about 40% graduate courses and 60% undergraduate courses.  We have included the teaching history of our tenure track faculty and instructors in an appendix.

 

 

Faculty Books and External Teaching Awards

Textbooks suitable for undergraduate curricula (co-)authored by our faculty include "Data Structures and Algorithms in C++" by David Mount, and  "Designing the User Interface" by Ben Shneiderman. Recognition of teaching excellence from outside the department, includes the following awards. David Mount won the Hong Kong University of Science and Technology, School of Engineering, Award for Teaching Excellence Appreciation (2001) while on sabbatical at the HKUST. Evan Golub was a Center for Teaching Excellence Lilly-CTE Fellow for 2002-2003.

 

Honors Program

The Computer Science Honors Program is a way to channel good students into research projects with faculty. Good students are identified early (via GPA and other means) and steered toward particular courses and particular faculty so that they can get involved in projects in their areas of interest. If they finish the research project and have maintained high GPA's, then they graduate with Honors. Several of our honors students have presented their work at conferences. Some have gone on to graduate school at Stanford, Berkeley, MIT, and other such schools. All have learned a great deal about some aspect of computer science.

 

In an attempt to better acknowledge the outstanding students in our department, we established the Eta Chapter at Maryland of the Upsilon Pi Epsilon International Honor Society for the Computing Sciences in the summer of 2001. This international honor society was founded at Texas A&M University in 1967 and has since grown to include over 150 institutions.

The dozen or so students selected annually for nomination in the Computer Science Department at our campus have shown great talent in their academic pursuits towards their degree and have merited invitation by achieving a superior grade point average in their Computer Science, Mathematics and Statistics courses while at Maryland

 

Number of Majors

The table below shows the number of students official listed as majors in our program for the past five years.

 

Year

1998

1999

2000

2001

2002

Number of majors

1752

1995

1939

1895

1665

 

The table below shows the number of incoming Computer Science freshmen.

 

Year

1992

1993

1994

1995

1996

1997

1998

1999

2000

2001

2002

# Freshmen

102

106

170

174

191

314

297

321

349

326

177

 

In fall 1997 the number of incoming Computer Science freshmen increased significantly and stayed at that level for about three years. For the last two years, the number of students entering the program has decreased. Through all of the fluctuations, we have managed to accommodate the needs of our students through the hiring of additional faculty and instructors, and through increased class size (the number of students in most senior level courses was increased from 40 to 50 students). It is very rare for a student to get closed out of a class. When this does happen, it is an upper level requirement, which can be met with other classes, so we place the student into an alternative class, which moves him/her toward graduation.

 

Gemstone Program

Gemstone is a unique program on our campus that involves honors undergraduate students of all majors. These students form teams of up to 15 students during their freshman year, and each team focuses on a specific research topic that culminates in a formal written thesis during the senior year. Each project, guided by a faculty mentor, must not only incorporate technological research, but also must involve social relevance. Current Computer Science Department faculty serving as team mentors, and the topic areas of their student teams, are:

 

·                          Bobby Bhattacharjee: Network Security;

·                          Don Perlis: Universal Device Interface;

·                          Jim Reggia: Genetic Programming.

 

Further information on this program can be found at http://www.gemstone.umd.edu/

 

Retention

In the six years from fall 1994 to fall 2000, the freshman retention rate for Computer Science majors rose over nine percent from 67.1% to 77.9%. It rose from 73.2% to 77.9% from fall 1997 to fall 2000. This rise is due in part to a focused concern on the part of the Department and the College. The Department instituted an Undergraduate Teaching Assistant Program. Undergraduates who have excelled in lower level programming courses and in the discrete structures course are hired to provide additional office hours for these courses. Many students have been helped by this additional free tutoring which is conducted by students who are especially trained and informed on the particular course assignments. The Department also made a prerequisite change two years ago which seems to be having a positive effect on success rate in the lower level Computer Science courses. Many aspiring Computer Science students were weak in mathematics and did not seem to understand the importance of mathematics in a Computer Science program. In an effort to let students know early about the mathematical content of the program and to improve the retention rate, the Department changed the corequisite for the first programming course to Calculus I. (Calculus I had been the corequisite for the second programming course.) In addition, the prerequisite for the discrete structures course was changed to Calculus II (rather than a co-requisite of Calculus I). This change has vastly improved the success rate for the discrete structures course.

 

The Dean's Office has a couple of programs which identify and aid at-risk students. In one of these, Project REAP, the student meets with a small group and a trained instructor each week. The discussions center on approaches to being a successful student. Concrete exercises are a part of the course. It is also very important to note that our mandatory and careful advising is a major factor in retention.

 

Number of graduates

The table below shows the number of undergraduate degrees granted during each of the past five years:

 

Year

1998

1999

2000

2001

2002

Graduates

182

194

222

282

269

 

Placement of graduates

Though it is difficult to gather placement information on graduates, all indications are that the placement for our graduates is nearly one hundred percent. Our Dean's Office does a survey of students who are graduating in a given semester. In spring 2001, for example, forty four students indicated that they had accepted jobs. Some of the companies which hired more than one student were Microsoft, The Motley Fool, Hughes Network Systems, Lockheed Martin Corporation, and the National Security Agency. The average starting salary was a bit over $52,000. Three of the Computer Science graduates indicated that they were going to graduate school. Several had not begun to look for jobs. Others said that they were deciding between multiple offers. We do not have more recent compiled results of these surveys.

 

Feedback from students

 

We spoke to a sample of our undergraduate students. They were happy overall with our undergraduate program. The main issues that they brought up are as follows.

 

1.    Lack of real contact with faculty, due to the large size of the department. The students felt that they had little opportunity to get to know any of our faculty. One student contrasted his 50-student senior-level courses in our department with his 15-student courses in Philosophy.

 

2.    Approaching, finding and waiting for a TAs for one’s class in the large TA room is chaotic and can be intimidating for new students.

 

3.    Students want human feedback on programming projects for issues such as style, etc. They found that some number of students even at the Senior level were seriously lacking in overall programming skills, and felt that regular feedback during course projects would help substantially. This is currently a logistical issue, since we have a small number of instructors and faculty relative to the number of students.

 

4.    We need better labs—many have old/slow computers. Some students need Windows machines. The Business School building has better computers, but is too far away. The Linux Lab closes by 10PM, but many students prefer to work late on programming assignments.

 

5.    Wait-list roulette is a continuing source of frustration for the students. A particular problem exists for our best sophomores and juniors, who may be ready to take senior level courses but are shut out of them by the time they are allowed to register. It was suggested that a few seminar-type senior courses with a small cap will help the more motivated students. We also need to find ways for talented undergraduates to take (advanced) graduate courses. In general, we need to continue working on the balance between serving all students and focusing on both the stars and the students lagging behind.

 

6.    Some of our best students are either ignorant of or avoid the honors program. Perhaps some avoid it because they cannot commit the time to take on an honors project. A few seminar-type courses, as mentioned above, can provide a challenge for interested undergraduates.

 

7.    General problems caused by lack of community among the undergraduates.

 

We also reviewed comments from several students that felt that the environment within the department wasn’t supportive and that the programming assignments were excessively difficult and time consuming.

Feedback from instructors

We also held discussions with the instructors. Among the many issues discussed, we settled on the following three goals as important goals for the next several years.

·           Getting back to 40-student caps in the 400-level courses.

·           Providing some human feedback on programming projects in all courses with such projects.

·           Doing more to provide review and professional development for instructors. One goal of instituting a different review process is to strengthen the communication between instructors and professors. Avenues for professional development include getting one course off periodically to take courses; opportunities to participate in research proposals; equivalents of Summer Research Grants, etc.

 

Recommendations for our Undergraduate Program

The state of our undergraduate program is good, but not great. Attempts are being made to make our undergraduate program world class, but resource constraints are limiting that effort.

A surge in undergraduate enrollment, starting in 1997 and unlimited by any selective enrollment or admissions caps, more than doubled the size of the undergraduate program. The increase was seen both in the number of freshmen electing to major in computer science, and in the number of students in each course. A new undergraduate major in Computer Engineering was also started in 1997 in the Department of Electrical and Computer Engineering, and those students are taking several of our classes. Some junior level courses more than tripled their enrollment, and the student surge recently reached the senior classes.

To cope with this surge in enrollment, the CS department hired a number of additional professors and instructors, but was unable to hire enough to balance ith the increased number of students. As a result, we agreed to a number of temporary measures, such as increasing the size of our senior level undergraduate classes, leading to a higher student to faculty and TA ratio. 

The number of full time lecturers has substantially increased over the past 5-10 years. The lecturers are considered faculty, and participate in faculty meetings and last year’s departmental retreat. However, professors and lecturers have not co-taught courses, and we still need to do a better job of building communications between the instructional and the professorial faculty.

While we were able to maintain adequate quality in our core undergraduate mission, other tasks associated with a world-class undergraduate program were given less energy, or have simply been impossible. These tasks include:

·           Providing students with substantial feedback on style and good programming habits on their programming projects (in addition to grading on correctness). Our current student/TA ratio is 33-50 students/TA, which doesn’t allow for much feedback.

·           Encouraging informal, out of class contacts between students and faculty.

·           Small senior capstone and/or honors courses.

·           Involvement of professors in the lower level programming courses

 

The number of incoming CS freshmen is dropping back down to pre-boom numbers, and the number of students in the lower level courses is dropping. There is significant agreement and enthusiasm in the department for trying to improve our undergraduate program and taking on some of these neglected tasks, including a complete revision of the lower level courses and having professors involved in the development and teaching of those courses.

The space and administrative staff is also woefully inadequate even for the undergraduate program. The space available for advising is completely inadequate, and there is no space for an undergraduate lounge or undergraduate research laboratories. Our undergraduate office is understaffed, with inadequate manpower for advising, tutoring and working with students on extracurricular activities.

We do not have enough information to know if the complaints by some students about our program are representative or atypical. Over the past few years, since we had no limited enrollment and a huge number of majors, many of the lower level courses had relatively high failure rates. This may have contributed to an environment that was perceived as unsupportive. We should do more to investigate this issue, and do whatever we can to make the undergraduate program more supportive, particularly to bright students that do not have substantial programming experience (a category that includes many of our female students). 

While dropping student numbers might have freed up the resources needed to take on these tasks, the current budget crunch has forced staffing reductions that threaten our ability to substantially improve our undergraduate program. For FY 04, the campus budget cuts have forced the elimination of 3 lecturer positions and 12 graduate TA positions. There has been a freeze on the hiring of new faculty. A bleak budget situation is likely to extend for at least another year, perhaps longer.

In spite of these reductions in staffing, lower student numbers will allow us to maintain an adequate but strained level of quality in our core undergraduate mission. However, we will be forced to delay important enhancements to our undergraduate program.

The critical issues that need to be addressed are:

·           The size of most of the senior-level courses should be reduced to at most 40 students, in line with most other majors on campus.

·           TA support in the lower level programming courses needs be increased to allow providing students with feedback on good programming habits.

·           We need to find and allocate the resources needed to continue the planned revision of the intro programming courses and involvement of professorial faculty in the development and teaching of those courses.

·           These changes should be accomplished while not noticeably decreasing the percentage of graduate courses taught by professorial faculty.

·           We need to establish a better practice of reviewing, mentoring and providing professional development opportunities to the instructional faculty. This effort should involve the professorial faculty, to help improve communications between the professorial and instructional faculty.

·           We need additional administrative and instructional staff to provide better customer support for our undergraduates.

·           We need to evaluate what steps, if any, need to be taken to make the students feel that the department is a more supportive environment, particularly for those students without extensive programming experience before their major.

·           We need more space for TA office hours, for the additional administrative staff needed by the undergraduate program, for an undergraduate lounge and for undergraduate research laboratories.

·           We mist provide more opportunities and encouragement for our best students to have informal contact with faculty and to get involved in research.

 

Graduate Program

Contents