Dr. Sheppard received his BS in computer science from Southern Methodist University in 1983. Later, while a full-time member of industry, he received an MS in computer science in the Johns Hopkins Part Time Engineering program (1989). He then continued his studies and received his Ph.D. in computer science from Johns Hopkins in the day school (1996). Dr. Sheppard is the RightNow Technologies Distinguished Professor in the Computer Science Department at Montana State University and an Associate Research Professor in the Computer Science Department at Johns Hopkins. His research interests include model-based and Bayesian reasoning, reinforcement learning and games, and fault diagnosis/prognosis of complex systems. In 2007, he was elected as a Fellow of the IEEE "for contributions to system-level diagnosis and prognosis." Prior to joining the full time faculty at Hopkins, Dr. Sheppard was a member of industry for 20 years. His prior position was as a research fellow at ARINC. Dr. Sheppard became a member of the EPP faculty in 1994. He teaches courses in algorithms, artificial intelligence, machine learning, and evolutionary computation.
This follow-on course to data structures (e.g., 605.202) provides a survey of computer algorithms, examines fundamental techniques in algorithm design and analysis, and develops problem-solving skills required in all programs of study involving computer science. Topics include advanced data structures (red-black and 2-3-4 trees, union-find), recursion and mathematical induction, algorithm analysis and computational complexity (recurrence relations, big-O notation, NP-completeness), sorting and searching, design paradigms (divide and conquer, greedy heuristic, dynamic programming, amortized analysis), and graph algorithms (depth-first and breadth-first search, connectivity, minimum spanning trees, network flow). Advanced topics are selected from among the following: randomized algorithms, information retrieval, string and pattern matching, and computational geometry.
605.202 Data Structures or equivalent.
To provide the fundamental background and experience in the design and analysis of computer algorithms in preparation for more advanced study in computer science.
This course is offered every semester at various EPP locations. The specific section taught by Dr. Sheppard is typically offered online during the Fall semester.
| Weekly Homework Sets | 50% |
| Four Programming Assignments | 30% |
| Class Participation | 20% |
In terms of assigning a final letter grade, the following is provided as guidance. Note that grading does not following strict percentages. You may consider them as a worst-case scenario (i.e., 90%+ for A, 75-89% for B, 60-74% for C); however, it is common for the scale to be adjusted downward based on relative performance of the class. The goal is for the top 20% of the students to receive an A and the remainder of the class a B. The lowest homework grade (except the last) and the lowest program grade (except the last) will be dropped.
Proficiency in at least one structured or object-oriented programming language (e.g., Java or C++) and proficiency in data structures.
All work is to be through individual effort. Occassional collaborative problems are also assigned. The computer science academic integrity code is followed and enforced strictly. The class participation grade is based on attendance, in-class discussion, and Sakai use.
Textbook information for this course is available online through the MBS Direct Virtual Bookstore.
There are notes for this course.
This course uses Sakai to provide the principal course content and tools (including online office hours) for the student. Sakai can be accessed at http://sakai.jhu.edu.
(Last Modified: 08-17-2009 at 9:41:30 PM)