\input ../GenCourseInfo/Front1.tex
\input TitleDate158.tex
\input ../GenCourseInfo/Front2.tex

% \section{Important Dates and Deadlines}

\begin{itemize}

\item formation of Homework groups: January 11

\item Midterm Exam:  March 8

\item Group Quiz:  March 15

\item Project due:  March 23

\end{itemize}

\section{Prerequisites}

\begin{itemize}

\item Programming, at the level of the average upper-division ECS class.  

\item The ECS 150 OS class is NOT a prerequisite

\end{itemize}

\section{Textbook and Other Required Materials}

The textbook is my open source book, available at
\url{http://heather.cs.ucdavis.edu/~matloff/158/PLN/ECS158Winter2012.pdf}.

We will cover the entire book.  Note that it is continually revised,
with the latest version at
\url{http://heather.cs.ucdavis.edu/~matloff/158/PLN/ParProcBook.pdf},
You may find that sometimes the revised material is helpful, but it is
NOT required.

You can print the book in town, say at Copyland on G Street and Davis
Copy Shop on 3rd St., but you may find it's cheaper elsewhere.  Cost,
including binding, should be between \$20 and \$30.  One student said
she got her book from Digital Copies on 3rd St. for just \$16.  (Note:
When you talk to a vendor on this, be sure to distinguish between {\it
pages} and {\it sheets}.)

It is required that you have a hard copy of the book, as it will be used
during Tests.


\section{Workload}

There will be approximately five programming assignments.  They will
typically have fewer lines than, but require considerably more thought
than, a typical ECS 60 program.

\section{Why This Course Is Important}

Everything is parallel today.  It's basically impossible to buy a
single-core PC nowadays, and even smart phones are now dual core.

Yet employers complain that skill in parallel programming is in short
supply.  Having that skill is a big advantage in the job market.  

One student who interviewed for jobs when he was taking ECS 158 wrote to
me about one interview he had had:

\begin{quote}
The senior advanced systems engineer asked me several questions about     
multi-threading including several on how to go by debugging pthreads
code...I was well prepared! 
\end{quote}

He followed up a few days later:

\begin{quote}

I got a job offer from two different departments including the 
interview with the Senior Manager Software Engineer who asked 
me about pthreads.  I got an offer and am taking the job with him...

[Goes into detail on the questions he was asked.]

...I definitely would not have gotten the offer if it weren't for 
this class.  

\end{quote}

\section{Course Content} 

\begin{itemize}

\item types of parallel 
hardware 
   \begin{itemize}

   \item multicore and multiprocessor machines

   \item networks of workstations (NOWs)

   \item graphics processing units (GPUs)

   \end{itemize}

\item introduction to major parallel programming packages
(APIs for C/C++ and other languages): 

   \begin{itemize}

   \item OpenMP and threads

   \item CUDA

   \item MPI 

   \item Hadoop

   \end{itemize}

\item parallel programming in specific fields of application, including
 
   \begin{itemize}

   \item database operations

   \item image processing

   \item scientific computing 

   \item statistics

   \item data mining

   \end{itemize}

\end{itemize}

\section{Course Web Page}

Information about office hours etc. is available on our course Web site,
\url{http://heather.cs.ucdavis.edu/~matloff/158.html}. 

\input ../GenCourseInfo/Machines.tex

\subsection{Your Own Machines at Home}

OpenMP, MPI, CUDA and Hadoop are open-source, cross-platform packages, so in
theory you could work on your own machine at home in some cases.
However, this is a course in {\it parallel} programming, so you need a
parallel machine:

\begin{itemize}

   \item You probably have a dual-core machine at home.  You'll be able
   to do some of your OpenMP/threads work on it, but in some cases
   we'll be using the quad-core machine Tetra on CSIF.

   \item CUDA requires a high-end NVIDIA video card, as we have on some
   CSIF machines.  If you have this on your machine, you can work there.

   \item MPI requires a network of machines, such as CSIF.

\end{itemize}
\input ../GenCourseInfo/SyllabusCore.tex


