Math 447/627 - Introduction to Parallel Computing
Fall 2024 - Syllabus - Matthias K. Gobbert
This page can be reached via my homepage at
http://www.umbc.edu/~gobbert.
Basic Information
- Instructor: Matthias K. Gobbert, gobbert@umbc.edu,
office hours Tuesdays and Thursdays 01:00-02:00 in MP 416 in-person,
by appointment online, or by e-mail.
Dr. Gobbert has accumulated extensive experience in teaching
with state-of-the-art technology.
Since participating in the
first cohort in the Alternative Delivery Program (ADP) in 2006,
he uses hand-writing on tablet laptops for all lectures.
These lectures are taped and hosted online for streaming,
with the added benefits of allowing for pausing, rewinding, and reviewing.
Using the taped lectures for contents delivery,
Dr. Gobbert uses a team-based active-learning teaching model,
in which students work on problems in learning groups during class.
Since 2019, his classes use online comprehension quizzes on the lectures
and fully online submission of all assignments, complete with online grading.
Since starting online teaching full-time in 2020,
the synchronous class meetings are used additionally for
student presentations to maximize active student engagement.
In 2010, Dr. Gobbert received the
University System of Maryland Board of Regents'
Faculty Award for Excellence in Mentoring.
- This syllabus consists of this frontpage and the sub-pages
- Classes:
Tuesdays and Thursdays, 11:30 am,
in MP 102 and in Class Collaborate;
my intention is to offer the class in HyFlex format,
meaning you can attend in-person or online;
if you wish to select online, you must communicate with me by e-mail,
the default is in-person;
see the detailed schedule
for more information on the coverage, due dates,
and timing of the synchronous class meetings.
Note on time commitment: Notice that in a regular semester,
you are supposed to spend about 10 to 12 hours per week on this course.
If you cannot devote this time,
consider if you want to be in this course.
This course will be taught in a flipped classroom format. This means
that the contents is delivered asynchronously online by taped videos of
my lectures that you study before our synchronous class meetings.
The synchronous class meetings will
use a team-based active-learning teaching model, in which
students work on problems in learning groups formed by the instructor
with the help of the instructor.
Learning groups:
I will form learning groups of about two to four students.
These groups are strongly encouraged
to also communicate outside of class.
Synchronous class meetings:
Our synchronous class meetings are an opportunity for
active teamwork with your learning group,
while the instructor is available immediately for questions.
These meetings will take place in-person in the classroom
as well as optionally in Class Collaborate,
which is included with Blackboard, see below and note on recordings.
We will also have presentations by students
on the recorded lectures and on homework solutions
in the synchronous class meetings.
This and the other strategies above are designed to
foster student engagement as well as give you chances
to participate more actively, get to know each other better,
have a demonstrated record of using the tools of online learning,
and more.
If you have any concerns about any of these items,
such as concerns about adequate internet connection,
about team work, or special needs related to learning styles,
please reach out to me as soon as possible,
so I can clarify questions and/or
we can work out alternate appropriate approaches and metrics.
My goal is definitely that anyone can participate successfully
in this course, even if you might need to do it completely
asynchronously, but we need to communicate about this.
- Prerequisites: a grade of C or better in
Math 152 Calculus II,
Math 221 Linear Algebra,
Math 225 Introduction to Differential Equations,
CMSC 201 Introduction to Computer Science,
and preferably Math 251 Multivariable Calculus
and/or a course on numerical methods;
recommended preparation:
proficiency in programming C/C++ and
in using the Unix/Linux operating system;
or consent of instructor.
Instructor consent required:
Dr. Gobbert has to give you permission to register for the course.
Send e-mail to gobbert@umbc.edu and explain your background in
mathematics and programming.
The goal is to communicate and make sure that you have enough
preparation to be successful in this course.
- These books are highly recommended as reference,
but are not required.
The intention is to cover the material of the course sufficiently well
by the lectures, possibly complemented by specific reading assignments,
that I will post online.
-
Recommended textbook on parallel computing:
Peter S. Pacheco,
Parallel Programming with MPI,
Morgan Kaufmann, 1997.
Associated webpage:
http://www.cs.usfca.edu/~peter/ppmpi.
We will have explicit reading assignments for several chapters
from this book at the beginning of the semester,
that I will post online.
-
Recommended book on the programming language C:
Brian W. Kernighan and Dennis M. Ritchie,
The C Programming Language,
second edition, Prentice-Hall, 1988.
This is the classic book on C written by its creators.
It is the shortest book I know on the subject and a nice
one to have because of its authorship, but you can also
use other resources to learn C programming for our purposes.
-
Recommended book on Matlab/Octave:
Desmond J. Higham and Nicholas J. Higham,
Matlab Guide, third edition, SIAM, 2017.
The associated webpage
https://nhigham.com/matlab-guide
includes a list of errors, downloadable code, links, and much more.
Matlab's documentation is excellent, but along with its functionality
has reached a scale that requires a lot of sophistication to fully
understand. Moreover, there is a definite role for a book that
is organized by chapter on topics such as all types of functions
(inline, anonymous, etc.), efficient Matlab programming
(vectorization, pre-allocation, etc.), Tips and Tricks, and more.
- Grading rule:
Participation and Quizzes
| Entrepreneurship activities
| Homeworks
| Class Project
|
10%
| 10%
| 40%
| 40%
|
-
Active participation is the key to success in
any class, mathematics or otherwise.
This category gives you credit for all associated activities
including studying the recorded lectures completely,
preparing for the synchronous class meetings as assigned,
the active participation in team work,
the participation in synchronous class meetings,
and
adequate professional behavior in all aspects of the course,
such as communicating with the instructor, team mates,
respectful behavior in communications,
and timely submission of work, for instance.
To reiterate: As our contents delivery is through
my recorded lectures, you are required to study them completely.
since they are what a live lecture would be in a lecture format.
You are required to study them before class,
along with any other reading or preparatory activities,
so that we have a common starting point and
since you cannot learn actively and with others in the
class meetings, if you are not prepared.
If you have any concerns about this, see the note above.
The online quizzes
are administered in the course management system Blackboard,
see below, and are due before class.
The detailed schedule indicates
the planned due dates of these online quizzes,
but the Blackboard assignments list the official due dates and times.
There will also be in-class quizzes
using learning groups formed by the instructor.
For instance, they may be designed to initiate class discussion
or to give me feedback on your learning.
They may be technical or non-technical in nature.
A Quiz 0 will be given
on some material that is critical to
your success in this class.
- The entrepreneurship activities for Math 447 consist of
students working in teams to research
the history of a chosen software/company (well-known or otherwise)
that was created out of the subject matter of this course
(or computing in general) to commercialize software and/or computing,
such as MATLAB, COMSOL, SolidWorks, FIDAP.
Each team will present to the class for 15 minutes.
The presentation should both describe the software/product of
the chosen company (at least three references) and the
history (at least two references).
The team will lead a class discussion to of how the
example of this company could provide ideas how to
commercialize the type of computing that we do in this class.
-
The homework assignments will be posted in
the Blackboard site of our course, see below.
The detailed schedule indicates
the planned due date of each homework,
but the Blackboard assignments list the official due dates and times.
Working the homework is vital to understanding the course material,
and you are expected to work all problems.
In the flipped classroom format of this course,
you should work on the homework
about the associated taped lectures on that topic before class.
We will then complete the code and results in class,
and it is then due before the start of the next topic.
The homeworks are weighted so heavily,
because they include the computer assignments
that are vital to the computational focus of this course.
Homework submission is online as one PDF file
in the Assignments area of our Blackboard site.
Late submission of homeworks, except Homework 1a,
cannot be accepted under any circumstances.
If homework is accepted late, it accrues a deduction of
up to 10% of the possible score
for each day late until my receiving it;
I reserve the right to exclude any problem from scoring
on late homework, for instance, if we discuss it in class.
Homework 1a is required of all students and is accepted late.
The team work in this class is educational in nature,
meaning that each and every student has to solve
each and every problem; the work is not split up
and credit is only given to team members who actively
participate (and in particular only if you are present).
-
It is increasingly important
at this point in your education to learn
how to work on a larger project on your own
(with guidance by the instructor)
and to present your results in the form of a
professional-grade type-set report.
The class project will include these components.
You can choose between two types of projects:
One is a topic that is designed individually
and also includes an oral presentation.
The other option is to complete the report
on an assigned class project (without oral presentation).
I want to mention that a class project is a great way to start
on a research project,
in case that is something you are interested in.
Additional details or changes will be announced as necessary.
See also general rules and procedures
for more information.
Announcements may be made in class, by e-mail, or in Blackboard.
You are responsible for checking
your UMBC e-mail address sufficiently frequently.
-
We will use the course management system
Blackboard Ultra
for posting of all material
(including homework, lesson plans, PDF transcripts, handouts),
for links (to tapings of lectures),
and
for submission of homeworks.
Notice that Blackboard Ultra is the new version of Blackboard
that is more mobile friendly.
The main navigation buttons are arranged along the top of the screen,
with Content, Announcements, and Gradebook the ones we will use.
I will also use Blackboard to send Announcements to the class,
which goes to your UMBC account by default.
Therefore, you must either check your UMBC e-mail regularly
or have the mail forwarded to an account that you check frequently.
You should have your notifications in Blackboard turned on!
Do not use Blackboard to message me,
since I may not find it in a timely fashion;
rather use conventional e-mail to my UMBC address listed above.
Course Description
Parallel computing has become an ubiquitous
way to perform computer simulations involving large amounts of data or
intensive calculations. The basic purpose of using several processors
is to speed up computations of large problems by distributing the
work. But large problems typically involve vast quantities of data
as well; by pooling the memory from several processors, problems
of previously unsolvable size can now be tackled in reasonable time.
This course will introduce the basic aspects of parallel programming
and the algorithmic considerations involved in designing scalable
parallel numerical methods.
The programming will use MPI (Message Passing Interface),
the most common library of parallel communication commands
for distributed-memory clusters with multi-core CPUs.
Several application examples will
demonstrate how parallel computing can be
used to solve large problems in practice.
We will also consider the options for taking advantage of
shared memory architectures by OpenMP multi-threading and consider using
state-of-the-art massively parallel GPUs (graphics processing units)
as accelerators.
Registered students in this course will gain access to the
cluster in the UMBC High Performance Computing Facility
(HPCF; hpcf.umbc.edu).
This class is also intended to familiarize you with this cluster,
if you expect to use it for your research in the future.
One of the side benefits of this class is to help in the creation
of a user community on campus.
The class will include an efficient introduction to the Linux operating
system as installed on the cluster used, and it will include
a review of serial programming in the source code language C
that is integrated into the initial presentation of sample codes.
This review assumes some experience with compiling and debugging
in a high-level source code programming language.
It will only include a restricted set of features of C, but these are
selected to be sufficient for work on the homework assignments in the class.
Additionally, the class will include activities intended to develop
an entrepreneurial attitude and skillset.
We will explore jointly how software discussed in class could
be the basis for a commercial concept.
To this end, we will research how other software/companies came about
in the past.
This material enables this course to be used in the
Minor in Entrepreneurship and Innovation
Learning Goals
By the end of this course, you should:
-
understand and remember the key ideas, concepts, definitions,
and theorems of the subject.
Examples in this course include
understanding the purpose of parallel computing
and why it can work, being aware of potential limitations,
and knowing the major types of hardware available.
More broadly, you should also understand the purpose of
parallel computing.
--> This information will be discussed in the lectures
as well as in the textbook and other assigned reading.
-
be able to apply mathematical theorems and computational algorithms
correctly to answer questions,
and interpret their results correctly, including potentially
non-unique solutions or breakdowns of algorithms.
Examples include choosing among several methods to solve
a problem and how to react to intermediate solutions found
that may indicate a breakdown of the method.
--> The class discussions, homework, and quizzes address these skills.
-
have experience writing code for a Linux cluster using MPI in C, C++,
and/or Fortran that correctly solves problems in scientific computing.
The sample problems are taken from mathematics and your code has to
compile without error or warning, run without error,
and give mathematically correct results first of all.
In addition, it needs to run on a Linux cluster without error
and you need to be able to explain its scalability, i.e.,
why or why not it executes faster on several processors than in serial.
Writing code in this context includes the requirements to deliver code
in a form required, such as writing code to stated specifications,
using a requested method, complying with a required function header, etc.
The knowledge and skills in this item are valuable job skills,
which justifies the emphasis here.
--> This is one of the purposes of the homeworks and most
learning will take place there.
-
have some experience how to learn information from reading
and to discuss it.
More broadly, communication with peers as well as supervisors
is a vital professional skill, and the development of professional skills
is a declared learning goal of this course.
--> I will supply some research papers carefully
selected for their readability and relevance to the course.
-
have some foundational experience in writing professional-grade reports
in Mathematics.
This is explained more in the syllabus portion on
How to Report on Computer Results.
--> This is included in the homeworks.
-
have experience with independent work and presenting it both
in a written report and in an oral presentation.
It is vital to gain experience with setting your own goals,
estimating a realistic time line, working with peers and supervisors
on regular updates and giving and receiving suggestions,
submitting and editing a written report to standards of a research paper,
and presenting your results in an oral presentation as part of a
conference session.
--> The class project will cover all of these components,
and we will discuss the various steps necessary in class.
Reading the research papers above will give you a frame of reference
for how the report should look like.
-
have experience working actively with peers in a group,
both on the scale of the class and in a smaller team.
Group work requiring communication for effective collaboration
with peers and supervisors is a vital professional skill,
and the development of professional skills including this networking
is a declared learning goal of this course.
Additionally, getting to know other students as part of learning groups
will prove invaluable for homework and exams.
--> Group discussions and quizzes will contribute to this goal.
-
have gained experience with a wide variety of teaching and learning techniques,
with the goal of encouraging life-long learning.
Examples of teaching techniques include:
the use of recorded lectures (that are to be studied before class meetings),
the pedagogical technique of a flipped classroom (where we work actively),
the user of team-based learning (where you work with peers), and more.
Examples of learning techniques include:
learning by reading (e.g., assigned reading before class meetings),
learning by hearing
(e.g., voice-over in recorded lectures or verbal discussions in class meetings),
learning by writing (e.g., answering interpretative questions
that require long-hand English answers),
learning by talking (e.g., verbal presentations to class), and more.
The reflection on your use of study techniques
is a declared learning goal of this course,
since it is vital to recognize one's own strengths and weaknesses
for best success in live-long learning.
-->All aspects of the course will serve as examples.
-
have discussed and experienced an entrepreneurial attitude and skillset,
both by learning about how entrepreneurial thinking led to well-known companies
and considering how our products in coding could be commercialized.
--> This material enables this course to be used in the
Minor in Entrepreneurship and Innovation
Philosophical Underpinning
To provide some context of the more formal learning goals above,
I am sharing some deeper thoughts how we fit into the grander scheme of things.
The rationale of a state university is to provide a well-educated
workforce to the companies in the State of Maryland as well as
to the state and local governments themselves.
On a fundamental level therefore,
you need to able to learn new material
as well as have demonstrated evidence of this ability.
These are the fundamental purposes of university courses.
This requires us to engage in the learning itself and its demonstration;
I am trying to say that
it is not the solution to a problem that we are after,
and in broader thinking it is not even the solution process,
but it is your active struggle to learn that we must encourage.
This leads me to the following philosophical grade rubric:
To earn a passing grade,
you need to solve the problem correctly.
To earn a good grade,
you need to solve the problem correctly
and present the solution process completely and professionally.
To earn a very good grade, you need to do these and
additionally prove that your solution is correct.
This rubric comes from the fact that neither you as customer
would be willing to accept a faulty solution or unprofessional
or incomplete presentation,
nor would the companies in the State be served by faulty solutions.
These are some of the guiding principles behind my teaching.
Other Information
Note on Recordings and Their Publication
This class is being audio-visually recorded so students who cannot attend
a particular session and wish to review material can access the full content.
This recording will include students' images, profile images, and
spoken words, if their camera is engaged and their microphone is live.
Students who do not consent to have their profile or video image recorded
should keep their camera off and not use a profile image.
Likewise, students who do not consent to have their voice recorded should
keep their mute button activated and participate exclusively through
alternative formats such as email or the chat feature (where available).
UMBC Statement of Values for Academic Integrity
Academic integrity is an important value at UMBC.
By enrolling in this course, each student assumes the responsibilities of
an active participant in UMBC's scholarly community in which everyone's
academic work and behavior are held to the highest standards of honesty.
Cheating, fabrication, plagiarism, and helping others to commit these acts
are all forms of academic dishonesty, and they are wrong.
Academic misconduct could result in disciplinary action that may include,
but is not limited to, suspension or dismissal.
Consult the the UMBC webpage on Academic Integrity at
academicconduct.umbc.edu
for the
UMBC Undergraduate Student Academic Conduct Policy
for undergraduate students
and the
UMBC Graduate School's Policy and Procedures for Student Academic Misconduct
for graduate students.
Copyright © 2001-2024 by Matthias K. Gobbert. All Rights Reserved.
This page version 1.0, August 2024.