Offered in Spring 2016, 2017
Introduction to Programming for Engineers
BMED-110: Dept of Biomedical Engineering, Duquesne University
Instructor: Prahlad G Menon, PhD
Course Description:
BMED-110, Introduction to Programming, is a Freshman Undergraduate course with content that supplements early college courses in mathematics and technical computing, including calculus and matrix theory. This course will have a strong programming focus, primarily in Matlab but will also involve some basic R or potentially C / C++ in the context of MEX functions in Matlab. During this course, students will work with starter code for several Matlab programs relating to a range of engineering topics as well as cover extensive exercises involving modifying and extending these programs. The course will make extensive use of computer graphics, including a variety of interactive graphical rendering approaches applicable to mathematical data and images or N-dimensional signal data but also technical computing and visualization exercises relevant to mechanics, electrical circuits, biology, clinical imaging, thermal systems, fluid systems and other branches of science and engineering.
More specifically, programming exercises on numerical computing studied in this course will be focused on solving linear systems of equations, solving and visualizing solutions to ordinary and partial differential equations, fundamental signal processing techniques underpinning more advanced image or data processing approaches like image filtering (i.e. convolution, smoothing, de-noising, image segmentation, image / point-cloud registration techniques, etc.), as well as machine learning. To this end, this class will impart foundational knowledge through theory sessions conducted once a week, in addition to programming / code-writing tutorials. This will also help prepare students for more advanced coursework.
Programmatic implementation of simple to advanced signal / data processing pipelines will be explored from the standpoint of contextual examples and starter code, through a combination of in-class tutorials and assignments. In one example, fundamentals of statistical data analysis (i.e. T-tests, P-values, concepts of statistical significance, etc.) and machine learning based data classification will be introduced from the standpoint of establishing a practical foundation for solving data science problems.
In the interest of training students to write code which works within the limits of their computing resources, the theory component of this course will also offer up some foundational understanding of good programming practices and programming logic (eg: data structures, reading / writing data files, accuracy v/s precision, etc.), as well as computer architecture as it relates to bits, byes, data types, bit-depth, virtual memory, vectorization and task / data parallelism.
In addition to mathematical concepts, writing code and fundamental computer programming logic, a host of useful data processing libraries, including OpenCV and ITK / VTK, as well as Matlab Toolboxes (eg: curve fitting, neural networks, etc.) and Application Programming Interfaces (APIs) that can be used in conjunction with the basic Matlab interface, may be introduced (i.e. time permitting) by way of in-class demonstrations. This will expose students to the endless possibilities for extending the contextual learnings from the classroom to applications beyond basic matrix / data manipulation.
Learning Objectives
Fundamentals of Biomedical Imaging & Image Processing
This course is grounded firmly on programming in Matlab systems and will offer students a keen intuition in regard to writing effective and efficient code for data analysis and visualization. Through extensive exercises involving modifying and extending starter code / programs relating to a range of engineering topics, students will become adept at working with real-world data in a variety of forms.
Topics covered include :
- Vectors, Matrix algebra and solving linear systems of equations
- Symbolic v/s Numerical approaches to computation: Matlab v/s MuPad
- Loops and conditional statement constructs
- Writing Psuedo Code Algorithm flowcharting
- Reading / Writing files and statistical data analysis
- Curve fitting and correlation
- Simulation of parametric relationships and visualization of the same.
- Introduction to numerical solutions to simple Ordinary (and partial) differential equations
- Machine learning through the use of built in functions / toolboxes
- Introduction to programming Graphical User Interfaces (GUIs), using Matlab and R’s Shiny package.
Prerequisites: The expected background includes basic algebra, trigonometry, and some familiarity with computers. The course assumes nothing more than this basic background but will supplement early college courses in mathematics and technical computing, including calculus and matrix theory, linear algebra and basic signal processing, owing to the fact that several of these topics will be relevant to the exploration of the mathematical concepts using code in Matlab.
Texts & References:
1) Attaway, S. (2013). Matlab: a practical introduction to programming and problem solving. Butterworth-Heinemann. ISBN: 978-0-12-405876-7.
2) Moler, C. (2011). Experiments with MATLAB. The MathWorks, Co.
3) Moler, C. B. (2008). Numerical Computing with MATLAB: Revised Reprint. Siam.
4) Sigmon, K., & Davis, T. A. (2004). MATLAB primer. CRC Press.
5) Gonzalez, R. C., & Woods, R. E. (2002). Digital image processing.
6) Higham, D. J., & Higham, N. J. (2005). MATLAB guide. Siam.
7) Matlab “Help” documentation!
Final Project Memories (4/23/2016)
Syllabus & Course Material, Spring 2016
Available upon request via email; write to: menongopalakrip@duq.edu
or via CourseWeb / Blackboard for registered students.
Second opinions and medical technology solutions for the Patient.
We offer timely and accurate image processing of radiology images for clinical care, research, and training.
This is a service brought to you by the MEdical Diagnostics and CArdio-Vascular Engineering Lab.
The MeDCaVE – where QuantMD is engineered.
This is a service brought to you by the MEdical Diagnostics and CArdio-Vascular Engineering Lab.
The MeDCaVE – where QuantMD is engineered.