Syllabi for my courses can be found at http://sacan.biomed.drexel.edu/ftp/syllabi.

Term Course
Fall Bmes201: Programming and Modeling for BME I syllabus
Fall Bmes546: Biocomputational Languages syllabus
Fall Bmes550: Advanced Biocomputational Languages syllabus
Winter Bmes484,544: Genome Information Engineering syllabus aka Bioinformatics I
Winter Bmes547: Machine Learning in Biomedical Engineering syllabus
Spring Bmes483/543: Quantitative Systems Biology and Bioinformatics syllabus aka Bioinformatics II
Spring Bmes673: Biosimulation II syllabus
last offered: 20172 BMES375: Computational Bioengineering syllabus
last offered: 20093 BMES480,680: Scientific Computing & Visualization

FAQ: I am a new Graduate Student at Biomed.Drexel, should I take Bmes546 or Bmes550 ?

Bmes546 is designed as an introductory programming course, where the programming language is Matlab. Most students taking Bmes546 are new to computer programming. If you have not had any formal education in computer programming or you do not know Matlab, you should enroll in Bmes546. Matlab is going to be used in your upcoming engineering courses (e.g., Biosimulation), so you need to gain Matlab programming skills before getting to those courses.

In order to waive out of Bmes546, you need to be able to know the following basic programming concepts: selection statements, loops, functions, structs, cell arrays, vectorized code (ie., performing a mathmetical operation on each element of a vector),logical indexing, data import, basic statistics (finding average or standard deviation), and creating plots. As an example task you are expected to solve, consider the following problem:

Write a function xls_columnaverage(file, columnname) that takes as input arguments: the name of
an Excel file and the name of a column of interest. Assume that the first row of the Excel file
contains the field names (describing what each column contains), and the remaining rows contain
numerical data. Your function should load the data contained in the Excel file and calculate the
average of the column whose name is contained in columnname. The column average should be returned
from the function. Your function should work when it is called with any Exccel file and column name,
assuming the Excel file satisfies the constraints described above.

To test your function, create two example Excel files called sample1.xlsx and sample2.xlsx.
Add mock patient information to these Excel files. Make sample2 columns be in different order than sample1.
Include columns representing name, age, height, and weight. Add several rows of example patients to
each of these files.

Test your function in Matlab command window with the following test cases:

>> xls_columnaverage('sample1.xlsx','age')

>>  xls_columnaverage('sample2.xlsx','weight')

Double-check the answers from your function and make sure they match with what you get from manual calculations of the data.

If you have a strong background in Matlab and consequently waive out of Bmes546, you would take the advanced course, Bmes-550.

If you do not have experience in Matlab, but are well-versed in another programming language (e.g., Python) and believe you can bring yourself up to speed in Matlab on your own, you may take Bmes-550 instead.

Bmes-550 focuses on some of the advanced programming concepts, such as object oriented programming, database programming, web programming. Bmes-550 is more about these programming concepts rather than a specific programming language. Before you take Bmes-550, you are required to have a strong background in at least one programming language i.e., you may have taken Bmes-546 before you take Bmes-550, or you have strong background in Matlab and have waived out of Bmes546, or you have strong background in another programming language and have taught yourself Matlab before taking Bmes-550. Bmes-550 will use various programming languages (Matlab, C++, Python, R). You do not need to know all of these programming languages before taking Bmes550. Having a strong background in at least one programming language, students are expected to quickly adapt to other programming languages they have not used before. A brief introduction to other programming languages will be provided within the course.

After reading this, if you are still unsure about which course you should take, please get in touch with me (gmail: ahmetmsacan) and/or your advisor; list any programming courses you have taken and tell us about your programming experience outside class.

FAQ: I am a BS/MS student at Biomed.Drexel, can I take Bmes546 ?

No. Bmes546 is designed for graduate students with no programming experience in Matlab. You may take Bmes-550 instead.

FAQ: I am not a BMES student, can I take Bmes547 Machine Learning in Biomedical Engineering?

Yes, and you will be welcome. Having students from other domains of study provides unique perspectives and enriches the course. You may not have the pre-requisite courses (Bmes546 or Bmes550). These pre-requisite courses can be waived (subject to instructor and advisor approvals) if you have necessary programming background. To request a waiver, please email me (gmail: ahmetmsacan) and provide the following information: Which programming language(s) do you know and at what level? List programming courses you have taken in the past, as well as any programming projects you have worked on in or outside coursework.

In Bmes547, my programming demonstrations are mostly in Matlab, and sometimes in Python. Except when the focus is on a particular programming library, students are free to use any programming language for the assignments and the course project. Even though you can use any programming language for the course, I would recommend you bring yourself up to speed in Matlab to get the most out of the programming demonstrations. When working on the assignments, most students use Matlab, some students use Python, and a few students use R. Although possible, I have not had any students using Java for this course. Other programming languages may be used as well, subject to availability of machine learning functions and libraries.

This course is a mix of theory & applications. The level of theory covered is different for each ML method. For basic methods like PCA and gradient descent, I cover more detail of how these methods are constructed and implemented; for other methods, like SVM, I give just enough background to understand the parameters that one might need to adjust. If you have taken other machine learning methods, there will likely be overlap with the theory covered in this course.

My course syllabi are available at: http://sacan.biomed.drexel.edu/ftp/syllabi

Also check out some of the ML projects that studens have worked on for this course in the past: http://sacan.biomed.drexel.edu/proj/?cat=ml