Instructor Information

Mei-Ching Chen

Dr. Mei-Ching Chen has worked, over 20+ years in the area of data science, in academia, commercial organizations as well as support to various federal agencies, as a software developer, computer scientist, data engineer/analyst/scientist, and machine learning algorithm expert. She had also worked as a project and program manager at DSFederal, Inc., leading teams in support of multiple federal agencies to improve both organizational and project processes with better management and deliverables. Her recent work and research focuses on creating and developing practical solutions for all aspects of data characterization: from requirements, architecture design to analytical product release; from algorithm design and development, analysis/analytics strategies to program evaluation. Her current position is with the National Institutes of Health (NIH) Center for Scientific Review (CSR) as a Data Scientist. Furthermore, she continues and devotes herself to educating STEM students at various educational levels. She has been teaching courses at Johns Hopkins University Whiting School of Engineering since 2010.

Her goal in STEM education is to influence students to further their education in Science and Engineering, leaving a well-trained and educated next generation Scientists and Engineers. In her teaching, she focuses on hands-on experimental laboratories, the practical applications of the subject matter, and theoretical concepts in computer science, electrical engineering, and mathematical disciplines. She has taught both graduate and undergraduate courses in topics include but are not limited to algorithms, computer programming, data science, digital signal processing, engineering analysis, neural networks, as well as signals and systems. Dr. Chen has published numerous technical journal articles and conference proceedings.

Course Information

Course Description

This course 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 data science. Topics include advanced data structures for data science (tree structures, disjoint set data structures), algorithm analysis and computational complexity (recurrence relations, big-O notation, introduction to complexity classes (P, NP and NP-completeness)), data transformations (FFTs, principal component analysis), design paradigms (divide and conquer, greedy heuristic, dynamic programming), and graph algorithms (depth-first and breadth-first search, ordered and unordered trees). Advanced topics are selected from among the following: approximation algorithms, computational geometry, data preprocessing methods, data analysis, linear programming, multi-threaded algorithms, matrix operations, and statistical learning methods. The course will draw on applications from Data Science. Course Prerequisite(s): EN.605.201 Introduction to Programming Using Java or equivalent. EN.605.203 Discrete Mathematics or equivalent is recommended. Course Note(s): This required foundation course must be taken before other courses in the degree. This course does not satisfy the foundation course requirement for Bioinformatics, Computer Science, or Cybersecurity. Students can only earn credit for one of EN.605.620, EN.605.621, or EN.685.621.

Course Goal

To develop a broad understanding of the issues associated with designing and analyzing the expected performance of computer algorithms, and to develop greater competence and confidence in applying formal mathematical methods when determining the best approach to solving a computational problem.

Course Objectives

  • Analyze algorithms to determine worst-case complexity in terms of time and space requirements.
  • Design algorithms to meet functional requirements as well as  target complexity bounds in terms of time and space complexity.
  • Develop data structure techniques for various aspects of programming.
  • Implement algorithms to assess their actual performance compared to expectations from analysis.

When This Course is Typically Offered

This course is typically offered every semester online by Dr. Chen and/or Dr. Rodriguez.


  • Introduction and Data Structures
  • Advanced Data Structures
  • Basic Algorithm Analysis
  • Probability Distributions
  • Data Processing
  • Data Transforms
  • Computational Statistics
  • Artificial Intelligence
  • Machine Learning
  • Game Theory
  • Graph Algorithms
  • Deep Learning
  • Optimization
  • NP-Complete

Student Assessment Criteria

Homework/Programming 80%
Class Discussion/Collaboration 20%

Grading will be based on homework assignments, periodic programming assignments, and class participation/collaboration. Late homework and programming assignments will have a point deduction penalty, please ensure to inform the instructor if the assignment will be late.

Computer and Technical Requirements

Proficiency in Java, Matlab, Python, or R is required to complete the programming assignments. Students may use their own compiler, however, the instructor must be able to compile programs on Windows or Mac OS. A headset or speakers are required for this course.

Participation Expectations

Homework has both individual and collaborative problems. Programming assignments are an individual effort.


Textbook information for this course is available online through the MBS Direct Virtual Bookstore.

Course Notes

There are no notes for this course.

Final Words from the Instructor

(Last Modified: 01/08/2021 04:00:00 PM)