Skip to content
Snippets Groups Projects
Commit 0fa40ca8 authored by Yiqing Huang's avatar Yiqing Huang
Browse files

lab manual update

parent 68bb88d3
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
Lab administration related forms are given in this appendix.
\newpage
\begin{center}
{\bf ECE252 Request to Leave a Project Group Form}
{\bf ECE 252 Request to Leave a Lab Project Group Form}
\end{center}
\begin{table*}[h]
......
No preview for this file type
......@@ -6,12 +6,13 @@
%Brief overview of the document, acknowledgement, disclaimer
\chapter{Preface}
\section*{Who Should Read This Lab Manual?}
This lab manual is written for students who are taking Electrical and Computer Engineering (ECE) Systems Programming and Concurrency course ECE252 in the University of Waterloo.
\section*{Who Should Read This Lab Projects Manual?}
This lab projects manual is written for students who are taking Electrical and Computer Engineering (ECE) Systems Programming and Concurrency course ECE 252 in the University of Waterloo.
\section*{What is in This Lab Manual?}
\section*{What is in This Lab Projects Manual?}
The first purpose of this document is to provide the descriptions of each laboratory project.
The first purpose of this document is to provide the descriptions of each laboratory project
\footnote{We use lab project, lab, project interchangeably in this document}.
The second purpose of this document is a quick reference guide of the relevant development tools
for completing laboratory projects. This manual is divided into three parts.
......@@ -27,7 +28,7 @@ Part II is a set of course laboratory projects as follows.
\item Lab5: Single-threaded concurrency programming with asynchronous I/O
\end{itemize}
Part III is a quick reference guide of the Linux software development tools. We will be using Ubuntu 18.04 LTS operating system. Materials in this part needs to be self-studied before lab starts.
Part III is a quick reference guide of the Linux software development tools. We will be using Ubuntu operating system. Materials in this part needs to be self-studied before lab starts.
The main topics are as follows.
\begin{itemize}
......@@ -45,9 +46,9 @@ The main topics are as follows.
\section*{Acknowledgments}
We are grateful that Professor Patrick Lam shared his ECE459 projects with us. Eric praetzel has provided continuous IT support, which makes the Linux computing environment available to our students.
We are grateful that Professor Patrick Lam shared his ECE 459 projects with us. Eric praetzel has provided continuous IT support, which makes the Linux computing environment available to our students.
We would like to sincerely thank our students who took ECE254 and ECE459 courses in the past few years. They provided constructive feedback every term to make the manual more useful to address problems that students would encounter when working on each lab assignment.
We would like to sincerely thank our students who took ECE 254 and ECE 459 courses in the past few years. They provided constructive feedback every term to make the manual more useful to address problems that students would encounter when working on each lab project.
%%% Local Variables:
%%% mode: latex
......
......@@ -14,9 +14,12 @@
\vspace*{1.0cm}
\Huge
{\bf Electrical and Computer Engineering (ECE) Systems Programming and Concurrency ECE252 Laboratory Manual}
{\bf ECE 252 \\
Systems Programming and Concurrency \\}
\LARGE
{\bf Laboratory Projects Manual}
\vspace*{1.0cm}
\vspace*{3.0cm}
\normalsize
by \\
......@@ -42,7 +45,7 @@
\vspace*{1.0cm}
\copyright\ Y. Huang and J. Zarnett 2019 \\
\copyright\ Y. Huang and J. Zarnett 2019 - 2022 \\
\end{center}
\end{titlepage}
......
......@@ -35,7 +35,7 @@ Using the code in the starter files is permitted and will not be considered as p
\section{Pre-lab Preparation}
%Read Chapter \ref{ch_linux_env}.
Read the Introduction to ECE Linux Programming Environment supplementary material in Part \ref{part_ref} Chapter \ref{ch_linux_env}. Do the pre-lab exercises in Section \ref{sec_ex1}. Finish the pre-lab programming assignment before your scheduled lab starts (see \ref{sec:lab1_prelab_assignment}).
Read the Introduction to ECE Linux Programming Environment supplementary material in Part \ref{part_ref} Chapter \ref{ch_linux_env}. Do the pre-lab exercises in Section \ref{sec_ex1}. Do the pre-lab programming exercise (see \ref{sec:lab1_prelab_assignment}).
\subsection{Basic Linux Commands Exercises}
\label{sec_ex1}
......@@ -80,9 +80,9 @@ These pre-lab exercises are to practice some basic commands on Linux.
\item Use gdb or ddd to run the program under \url{http://github.com/yqh/ece252/tree/master/lab1/starter/segfault} directory of the starter code. When the code generates a segmentation fault inside the debugger, run the gdb command \code{where} to see the stack trace and fix the segmentation fault problem of the code.
\end{enumerate}
\subsection{Pre-lab Assignment}
\subsection{Pre-lab Programming Exercise}
\label{sec:lab1_prelab_assignment}
We will write some small pieces of code that can be used in the final lab assignment code. We will create a command line program named \verb+pnginfo+ that prints the dimensions of a valid PNG image file and an error message to the standard output if the input file is not a PNG file or is a corrupted PNG file. The command takes one input argument, which is the path name of a file. Both absolute path name and relative path name are accepted. For example, command \code{./pnginfo WEEF\_1.png} will output the following line:
We will write some small pieces of code that can be used in the final lab project assignment code. We will create a command line program named \verb+pnginfo+ that prints the dimensions of a valid PNG image file and an error message to the standard output if the input file is not a PNG file or is a corrupted PNG file. The command takes one input argument, which is the path name of a file. Both absolute path name and relative path name are accepted. For example, command \code{./pnginfo WEEF\_1.png} will output the following line:
\begin{verbatim}
WEEF_1.png: 450 x 229
\end{verbatim}
......@@ -97,7 +97,8 @@ IDAT chunk CRC error: computed 34324f1e, expected dc5f7b84
\end{verbatim}
You will find starter files under \href{http://github.com/yqh/ece252/tree/master/lab1/starter/png_util}{png\_util} directory are helpful. To make our pre-lab code reusable in the final lab, we will create two functions. One is \verb+is_png()+ which takes eight bytes and check whether they match the PNG image file signature. Another function is \verb+get_data_IHDR()+ which extracts the image meta information including height and width from a PNG file IHDR chunk. You are free to design the signatures of these two functions so that they will be re-used in your lab1 final solution and future labs 2 and 3 solutions\footnote{lab2 and lab3 are based on the code of lab1}. However in \verb+lab_png.h+ you will find some existing function prototypes that we put there to show one possible function prototype design. Feel free to modify these function prototypes to fit your own design. For computing the CRC of a sequence of bytes, the starter file already provides the crc.c and crc.h and the main.c that demos how to call the crc function to do the computation.
\section{Lab Assignment}
\section{LAB Project Assignment}
\subsection{Problem statement}
\begin{wrapfigure}{r}{2.5in}
......@@ -270,6 +271,8 @@ To create a new PNG for the concatenated images, IHDR chunk also needs to have t
\section{Deliverables}
\subsection{Pre-lab deliverables}
\label{lab1_prelab_deliverable}
None.
\iffalse
Pre-lab is due by the time that your scheduled lab sessions starts. No late submission of pre-lab is accepted. Grace days are not applicable to pre-lab submissions. The following are the steps to create your pre-lab deliverable submission.
\begin{itemize}
\item Create a directory and name it lab1-pre.
......@@ -277,8 +280,10 @@ Pre-lab is due by the time that your scheduled lab sessions starts. No late subm
\item Use \verb+zip+ command to zip up the contents of lab1-pre directory and name it lab1-pre.zip. We expect \verb+unzip lab1-pre.zip+ will produce a \verb+lab1-pre+ sub-directory in the current working directory and under the \verb+lab1-pre+ sub-directory is your source code and the Makefile.
\end{itemize}
Submit the \verb+lab1-pre.zip+ file to Lab1 Pre-lab Dropbox in Learn by the time your scheduled lab session starts. The TA on duty will evaluate the pre-lab by letting you demo the submitted program during the scheduled lab session.
\fi
\subsection{Post-lab Deliverables}
You submit your lab project 1 by tagging the commit with ``p1-submit'' on UWaterloo GitLab.
\iffalse
Post-lab is due two days after your scheduled lab session at 22:00. Grace days can be used towards late submissions of the post-lab deliverable. The following are the steps to create your post-lab deliverable submission.
\begin{itemize}
\item Create a directory and name it lab1.
......@@ -286,22 +291,24 @@ Post-lab is due two days after your scheduled lab session at 22:00. Grace days c
\item Use \verb+zip+ command to zip up the contents of lab1 directory and name it lab1.zip. We expect \verb+unzip lab1.zip+ will produce a \verb+lab1+ sub-directory in the current working directory and under the \verb+lab1+ sub-directory is your source code and the Makefile.
\end{itemize}
Submit the \verb+lab1.zip+ file to Lab1 Dropbox in Learn.
\fi
\section{Marking Rubric}
\begin{table}[ht]
\begin{center}
\begin{tabular}{|p{2cm}|p{2cm}|p{9cm}|}
\hline
Points & Sub-points &Description \\ \hline
15 & & Pre-lab \\ \hline
& 2 & \verb+Makefile+ correctly builds and cleans \\ \hline
& 13& Implementation of \verb+pnginfo+ \\ \hline
%15 & & Pre-lab \\ \hline
% & 2 & \verb+Makefile+ correctly builds and cleans \\ \hline
% & 13& Implementation of \verb+pnginfo+ \\ \hline
% & 3 & \verb+ckpng+ detects a non-png file type \\ \hline
% & 5 & \verb+ckpng+ prints non-corrupted png image dimensions \\ \hline
% & 5 & \verb+ckpng+ detects incorrect CRC of the simple PNG data chunk \\ \hline
85 & & Post-lab \\ \hline
& 10 & Makefile correctly builds and cleans \\ \hline
& 30 & Implementation of \verb+findpng+ \\ \hline
& 45 & Implementation of \verb+catpng+ \\ \hline
100 & & Post-lab \\ \hline
& 10 & clean project files organization \\ \hline
& 5 & Makefile correctly builds and cleans \\ \hline
& 35 & Implementation of \verb+findpng+ \\ \hline
& 50 & Implementation of \verb+catpng+ \\ \hline
\end{tabular}
\caption{Lab1 Marking Rubric}
\label{tb_lab1_rubric}
......
......@@ -21,8 +21,9 @@ It contains the following sub-directories where we have example code to help you
Using the code in the starter files is permitted and will not be considered as plagiarism.
\section{Pre-lab Preparation}
Read the entire lab2 manual to understand what the lab assignment is about. Build the starter code and run the executables. Work through the code and understand what they do and how they work. Create a single-threaded implementation of the \verb+paster+ command (see \ref{sec:man_paster_par}).
Finish the pre-lab deliverable (see Section \ref{sec:lab2-pre-lab-deliverable}).
Read the entire lab2 manual to understand what the lab assignment is about. Build the starter code and run the executables. Work through the code and understand what they do and how they work.
%Create a single-threaded implementation of the \verb+paster+ command (see \ref{sec:man_paster_par}).
%Finish the pre-lab deliverable (see Section \ref{sec:lab2-pre-lab-deliverable}).
%\section{Warm-up Exercises}
......@@ -143,6 +144,8 @@ There is a known memory leak bug related to \verb+pthread_exit()+. Please refer
\subsection{Pre-lab deliverables}
\label{sec:lab2-pre-lab-deliverable}
None.
\iffalse
Create a single-threaded implementation of the \verb+paster+ command. Pre-lab is due by the time that your scheduled lab sessions starts. No late submission of pre-lab is accepted. Grace days are not applicable to pre-lab submissions. The following are the steps to create your pre-lab deliverable submission.
\begin{itemize}
\item Create a directory and name it \verb+lab2-pre+.
......@@ -150,9 +153,12 @@ Create a single-threaded implementation of the \verb+paster+ command. Pre-lab is
\item Use \verb+zip+ command to zip up the contents of lab2-pre directory and name it lab2-pre.zip. We expect \verb+unzip lab2-pre.zip+ will produce a \verb+lab2-pre+ sub-directory in the current working directory and under the \verb+lab2-pre+ sub-directory is your source code and the Makefile.
\end{itemize}
Submit the \verb+lab2-pre.zip+ file to Lab2 Pre-lab Dropbox in Learn.
\fi
\subsection{Post-lab Deliverables}
\label{sec:lab2-post-lab-deliverable}
Create a multi-threaded implementation of the \verb+paster+ command.
Submit your lab project 2 by tagging the commit with ``p2-submit'' on UWaterloo GitLab.
\iffalse
The following are the steps to create your post-lab deliverable submission.
\begin{itemize}
\item Create a directory and name it lab2.
......@@ -160,7 +166,7 @@ The following are the steps to create your post-lab deliverable submission.
\item Use \verb+zip+ command to zip up the contents of lab2 directory and name it lab2.zip. We expect \verb+unzip lab2.zip+ will produce a \verb+lab2+ sub-directory in the current working directory and under the \verb+lab2+ sub-directory is your source code and the Makefile.
\end{itemize}
Submit the \verb+lab2.zip+ file to Lab2 Dropbox in Learn.
\fi
\section{Marking Rubric}
\begin{table}[ht]
......@@ -168,12 +174,13 @@ Submit the \verb+lab2.zip+ file to Lab2 Dropbox in Learn.
\begin{tabular}{|p{2cm}|p{2cm}|p{9cm}|}
\hline
Points & Sub-points &Description \\ \hline
30 & & Pre-lab \\ \hline
& 5 & \verb+Makefile+ correctly builds and cleans \\ \hline
& 25 & Implementation of single-threaded \verb+paster+ \\ \hline
70 & & Post-lab \\ \hline
%30 & & Pre-lab \\ \hline
% & 5 & \verb+Makefile+ correctly builds and cleans \\ \hline
% & 25 & Implementation of single-threaded \verb+paster+ \\ \hline
100 & & Post-lab \\ \hline
& 10 & clean project files organization \\ \hline
& 5 & Makefile correctly builds and cleans \\ \hline
& 65 & Implementation of multi-threaded \verb+paster+ \\ \hline
& 85 & Implementation of multi-threaded \verb+paster+ \\ \hline
\end{tabular}
\caption{Lab2 Marking Rubric}
\label{tb_lab2_rubric}
......
......@@ -54,7 +54,7 @@ Read the entire lab3 manual to understand what the lab assignment is about. Buil
\end{enumerate}
Linux man pages are also available on line at \url{https://linux.die.net/}.
Finish the pre-lab deliverable (see Section \ref{sec:lab3-pre-lab-deliverable}).
%Finish the pre-lab deliverable (see Section \ref{sec:lab3-pre-lab-deliverable}).
The main data structure to represent the fixed size buffer is a queue. A circular queue is one commonly seen implementation of a fixed size buffer if FIFO is required. A stack is another implementation if LIFO is required. You can either create the data structure yourself or use one from an existing library. If you want to explore the C library queue facilities, check out the man pages of insque(3), remque(3) and queue(3). There are example code at the end of the man pages.
\section{Lab Assignment}
......@@ -149,6 +149,8 @@ Note that due to concurrency, your output may not be exactly the same as the sam
\section{Deliverables}
\subsection{Pre-lab Deliverables}
\label{sec:lab3-pre-lab-deliverable}
None.
\iffalse
Create an implementation of the \verb+paster2+ command that can work with a single producer processes and a single consumer process. To be more specific, your \verb+paster2+ should be able to handle input parameter $(B, P, C, X, N)$, where $B \ge 1$, $P = 1$, $C = 1$, $X \ge 0$, and $N = 1, 2, 3$. Pre-lab is due by the time that your scheduled lab sessions starts. No late submission of pre-lab is accepted. Grace days are not applicable to pre-lab submissions. The following are the steps to create your pre-lab deliverable submission.
\begin{itemize}
\item Create a directory and name it \verb+lab3-pre+.
......@@ -156,10 +158,10 @@ Create an implementation of the \verb+paster2+ command that can work with a sing
\item Use \verb+zip+ command to zip up the contents of lab3-pre directory and name it lab3-pre.zip. We expect \verb+unzip lab3-pre.zip+ will produce a \verb+lab3-pre+ sub-directory in the current working directory and under the \verb+lab3-pre+ sub-directory is your source code and the Makefile.
\end{itemize}
Submit the \verb+lab3-pre.zip+ file to Lab3 Pre-lab Dropbox in Learn.
\fi
\subsection{Post-lab Deliverables}
\label{sec:lab3:postlab}
Put the following items under a directory named lab3:
Put the following items under the directory named lab3:
%Submit a compressed archive file that contains the following:
\begin{enumerate}
\item All the source code and a Makefile. The Makefile default target is \verb+paster2+ executable file. That is command \verb+make+ should generate the \verb+paster2+ executable file. We also expect that the command \verb+make clean+ will remove the object code and the default target. That is the \verb+.o+ files and the executable files should be removed.
......@@ -168,11 +170,14 @@ Put the following items under a directory named lab3:
The first line of the file is the header of the timing result table. The rest of the rows are the timing result command line argument values and the timing results. The columns of the .csv file from left to right are values of $B$, $P$, $C$, $X$, and the corresponding paster2 average execution time. We have an example .csv file in the starter code folder named \verb+lab3_eceubuntu1.csv+ for illustration purpose.
Run your paster2 on \verb+eceubuntu1+. Record the average timing measurement data for the $(B, P, C, X, N)$ values shown in Table \ref{tb_timing_lab3} for a particular host. Note that for each given $(B, P, C, X, N)$ value in the table, you need to run the program $n$ times and compute the average time. We recommend $n=5$.
\begin{table}[h]
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|}
\hline
B & P & C & X & N &Time \\ \hline
Submit your lab project 3 by tagging the commit with ``p3-submit'' on UWaterloo GitLab.
\begin{table}[H]
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|}
\hline
B & P & C & X & N &Time \\ \hline
5 & 1 & 1 & 0 & 1 & \\ \hline
5 & 1 & 5 & 0 & 1 & \\ \hline
5 & 5 & 1 & 0 & 1 & \\ \hline
......@@ -212,11 +217,11 @@ Put the following items under a directory named lab3:
10 & 10 & 1 & 400 & 1 & \\ \hline
10 & 10 & 5 & 400 & 1 & \\ \hline
10 & 10 & 10 & 400 & 1 & \\ \hline
\end{tabular}
\caption{Timing measurement data table for given $(B, P, C, X, N)$ values.}
\label{tb_timing_lab3}
\end{center}
\end{table}
\end{tabular}
\caption{Timing measurement data table for given $(B, P, C, X, N)$ values.}
\label{tb_timing_lab3}
\end{center}
\end{table}
% \begin{table}[h]
% \begin{center}
......@@ -244,22 +249,24 @@ Put the following items under a directory named lab3:
% \end{center}
% \end{table}
\end{enumerate}
\iffalse
Use \verb+zip+ command to archive and compress the contents of lab3 directory and name it \verb+lab3.zip+. We expect the command \verb+unzip lab3.zip+ will produce a \verb+lab3+ sub-directory in the current working directory and under the \verb+lab3+ sub-directory we will find your source code, the Makefile and the lab3\_hostname.csv file.
\fi
\section{Marking Rubric}
The Rubric for marking is listed in Table \ref{tb_lab3_ipc_rubric}.
\begin{table}[ht]
\begin{table}[h!]
\begin{center}
\begin{tabular}{|p{2cm}|p{2cm}|p{9cm}|}
\hline
Points & Sub-points &Description \\ \hline
20 & & Pre-lab \\ \hline
& 5 & \verb+Makefile+\\ \hline
& 15 & A partial implementation of \verb+paster2+. The code works correctly with input of $(B, P, C, X, N)$, where $B \ge 1$, $P = 1$, $C = 1$, $X \ge 0$, and $N = 1, 2, 3$. \\ \hline
80 & & Post-lab \\ \hline
%20 & & Pre-lab \\ \hline
% & 5 & \verb+Makefile+\\ \hline
% & 15 & A partial implementation of \verb+paster2+. The code works correctly with input of $(B, P, C, X, N)$, where $B \ge 1$, $P = 1$, $C = 1$, $X \ge 0$, and $N = 1, 2, 3$. \\ \hline
100 & & Post-lab \\ \hline
& 10 & clean project files organization \\ \hline
& 5 & \verb+Makefile+ \\ \hline
& 75 & Complete implementation of \verb+paster2+ and timing data\\ \hline
& 85 & Complete implementation of \verb+paster2+ and timing data\\ \hline
\end{tabular}
\caption{Lab3 Marking Rubric}
\label{tb_lab3_ipc_rubric}
......
......@@ -36,7 +36,7 @@ Read the entire lab4 manual to understand what the lab assignment is about. Buil
\end{enumerate}
Linux man pages are also available on line at \url{https://linux.die.net/}.
Create a single-threaded implementation of the \verb+findpng2+ command (see Section \ref{sec:findpng2_man}). Finish the pre-lab deliverable (see Section \ref{sec:lab4-pre-lab-deliverable}).
%Create a single-threaded implementation of the \verb+findpng2+ command (see Section \ref{sec:findpng2_man}). Finish the pre-lab deliverable (see Section \ref{sec:lab4-pre-lab-deliverable}).
\section{Lab Assignment}
\subsection{Problem Statement}
......@@ -142,6 +142,8 @@ If an URL has been visited already, then we do not want to visit it again. So a
\section{Deliverables}
\subsection{Pre-lab deliverables}
\label{sec:lab4-pre-lab-deliverable}
None.
\iffalse
Create a single-threaded implementation of the \verb+findpng2+ command. The \verb+-v+ option implementation is not required for pre-lab. We will test the pre-lab with \verb+-t 1+ and \verb+-m NUM+ where \verb+NUM >= 0+. Pre-lab is due by the time that your scheduled lab sessions starts. No late submission of pre-lab is accepted. Grace days are not applicable to pre-lab submissions. The following are the steps to create your pre-lab deliverable submission.
\begin{itemize}
\item Create a directory and name it \verb+lab4-pre+.
......@@ -149,10 +151,11 @@ Create a single-threaded implementation of the \verb+findpng2+ command. The \ver
\item Use \verb+zip+ command to zip up the contents of lab4-pre directory and name it lab4-pre.zip. We expect \verb+unzip lab4-pre.zip+ will produce a \verb+lab4-pre+ sub-directory in the current working directory and under the \verb+lab4-pre+ sub-directory is your source code and the Makefile.
\end{itemize}
Submit the \verb+lab4-pre.zip+ file to Lab4 Pre-lab Dropbox in Learn.
\fi
\subsection{Post-lab Deliverables}
\label{sec:lab4:postlab}
Put the following items under a directory named lab4:
Put the following items under the directory named lab4:
%Submit a compressed archive file that contains the following:
\begin{enumerate}
\item All the source code and a Makefile. The Makefile default target is \verb+findpng2+ executable file. That is command \verb+make+ should generate the \verb+findpng2+ executable file. We also expect that the command \verb+make clean+ will remove the object code and the default target. That is the \verb+.o+ files and the executable file should be removed.
......@@ -161,7 +164,7 @@ Put the following items under a directory named lab4:
The first line of the file is the header of the timing result table. The rest of the rows are the timing result command line argument values and the timing results. The columns of the .csv file from left to right are values of $T$ (the number of threads), $M$ (the number of unique PNG links to search for) and $TIME$ (the corresponding findpng2 average execution time). We have an example .csv file in the starter code folder named \verb+lab4_eceubuntu1.csv+ for illustration purpose.
Run your findpng2 on eceubuntu1. Record the average timing measurement data for the $(T, M)$ values shown in Table \ref{tb_timing_lab4} for a particular host. Note that for each given $(T, M)$ value in the table, you need to run the program $n$ times and compute the average time. We recommend $n=5$.
\begin{table}[h]
\begin{table}[H]
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
......@@ -170,18 +173,18 @@ T & M & Time \\ \hline
1 & 1 & \\ \hline
1 & 10 & \\ \hline
1 & 20 & \\ \hline
1 & 30 & \\ \hline
1 & 40 & \\ \hline
1 & 50 & \\ \hline
1 & 30 & \\ \hline
1 & 40 & \\ \hline
1 & 50 & \\ \hline
1 & 100 & \\ \hline
10 & 1 & \\ \hline
10 & 1 & \\ \hline
10 & 10 & \\ \hline
10 & 20 & \\ \hline
10 & 30 & \\ \hline
10 & 40 & \\ \hline
10 & 50 & \\ \hline
10 & 100 & \\ \hline
20 & 1 & \\ \hline
10 & 100 & \\ \hline
20 & 1 & \\ \hline
20 & 10 & \\ \hline
20 & 20 & \\ \hline
20 & 30 & \\ \hline
......@@ -195,8 +198,11 @@ T & M & Time \\ \hline
\end{center}
\end{table}
\end{enumerate}
Use \verb+zip+ command to archive and compress the contents of lab4 directory and name it \verb+lab4.zip+. We expect the command \verb+unzip lab4.zip+ will produce a \verb+lab4+ sub-directory in the current working directory and under the \verb+lab4+ sub-directory we will find your source code, the Makefile and the lab4\_hostname.csv file.
\iffalse
Use \verb+zip+ command to archive and compress the contents of lab4 directory and name it \verb+lab4.zip+. We expect the command \verb+unzip lab4.zip+ will produce a \verb+lab4+ sub-directory in the current working directory and under the \verb+lab4+ sub-directory we will find your source code, the Makefile and the lab4\_hostname.csv file.
\fi
Submit your lab project 4 by tagging the commit with ``p4-submit'' on UWaterloo GitLab.
\section{Marking Rubric}
Table \ref{tb_lab4_rubric} shows the rubric for marking the lab.
......@@ -206,12 +212,14 @@ Table \ref{tb_lab4_rubric} shows the rubric for marking the lab.
\begin{tabular}{|p{2cm}|p{2cm}|p{9cm}|}
\hline
Points & Sub-points &Description \\ \hline
25 & & Pre-lab \\ \hline
& 5 & \verb+Makefile+ correctly builds and cleans \\ \hline
& 20 & Implementation of single-threaded \verb+findpng2+ \\ \hline
75 & & Post-lab \\ \hline
%25 & & Pre-lab \\ \hline
% & 5 & \verb+Makefile+ correctly builds and cleans \\ \hline
% & 20 & Implementation of single-threaded \verb+findpng2+ \\ \hline
100 & & Post-lab \\ \hline
& 10 & clean project files organization \\ \hline
& 5 & Makefile correctly builds and cleans \\ \hline
& 70 & Implementation of multi-threaded \verb+findpng2+ \\ \hline
& 65 & Implementation of multi-threaded \verb+findpng2+ \\ \hline
& 20 & Correct timing results in lab4\_hostname.csv file\\ \hline
\end{tabular}
\caption{Lab4 Marking Rubric}
\label{tb_lab4_rubric}
......
......@@ -118,11 +118,11 @@ If an URL has been visited already, then we do not want to visit it again. So a
\fi
\section{Deliverables}
\subsection{Pre-lab Deliverables}
There is no pre-lab deliverable for this lab.
None.
%There is no pre-lab deliverable for this lab.
\subsection{Post-lab Deliverables}
\label{sec:lab5:postlab}
Put the following items under a directory named lab5:
Put the following items under the directory named lab5:
\begin{enumerate}
\item All the source code and a Makefile. The Makefile default target is \verb+findpng3+ executable file. That is command \verb+make+ should generate the \verb+findpng3+ executable file. We also expect that the command \verb+make clean+ will remove the object code and the default target. That is the \verb+.o+ files and the executable file should be removed.
\item A timing result .csv file named lab5\_hostname.csv
......@@ -164,8 +164,10 @@ T & M & Time \\ \hline
\end{center}
\end{table}
\end{enumerate}
\iffalse
Use \verb+zip+ command to archive and compress the contents of lab5 directory and name it \verb+lab5.zip+. We expect the command \verb+unzip lab5.zip+ will produce a \verb+lab5+ sub-directory in the current working directory and under the \verb+lab5+ sub-directory we will find your source code, the Makefile and the lab5\_hostname.csv file.
\fi
Submit your lab project 5 by tagging the commit with ``p5-submit'' on UWaterloo GitLab.
\section{Marking Rubric}
The Rubric for marking is listed in Table \ref{tb_lab5_aio_rubric}.
......@@ -174,9 +176,10 @@ The Rubric for marking is listed in Table \ref{tb_lab5_aio_rubric}.
\begin{tabular}{|p{4cm}|p{10cm}|}
\hline
Points & Description \\ \hline
10 & Makefile correctly builds and cleans \verb+findpng3+\\ \hline
10 & clean project files organization \\ \hline
5 & Makefile correctly builds and cleans \verb+findpng3+\\ \hline
65 & Implementation of \verb+findpng3+ in Section \ref{sec:findpng3_manpage} \\ \hline
25 & Correct timing results in lab5\_hostname.csv file\\ \hline
20 & Correct timing results in lab5\_hostname.csv file\\ \hline
% \hline
% Bonus Points & \\ \hline
%50 & Implementation of the bonus feature in Section \ref{sec:findpng3_bonus} \\ \hline
......
......@@ -12,24 +12,21 @@
split up. There is no workload reduction if you do
the labs individually.
Everyone in the group normally gets the same mark.
The Learn at URL
\verb+http://learn.uwaterloo.ca+
LEARN (\url{https://learn.uwaterloo.ca})
is used to signup for groups.
%The Course Book System at URL\\
%\verb+ https://ecewo32.uwaterloo.ca/cgi-bin/WebObjects/CourseBook+\\
%is used to signup for groups and reserve lab demo times.
{\em The lab group signup is due by 10:00pm on the Second Friday of
{\em The lab group sign-up is due by 22:00 EST on the Second Friday of
the academic term}. Late group sign-up is not accepted and will
result in losing the entire lab sign-up mark, which is \verb+2%+
of the total lab grade. Grace days does not apply to Group Signup.
result in losing the entire lab sign-up mark, which is \verb+1%+
of the total lab grade. Grace days do not apply to Group Sign-up.
\item {\bf Group Split-up.}
If you notice workload imbalance, try to solve it as soon as possible
within your group or split-up the group as the last resort.
Group split-up is only allowed once. You are allowed to join a one member group
after the split-up. But you are not allowed to split up from the newly formed group again.
There is one grace day deduction penalty to be applied to each member in the old group.
We highly recommend everyone to stay with your group members as much as possible, for the ability to do team work will be an important skill in your future career.
Each member in the old group will lose their group sign-up points.
We highly recommend everyone to stay with your group members as much as possible,
for the ability to do team work will be an important skill in your future career.
Please choose your lab partners carefully.
A copy of the code and documentation completed before the group split-up
will be given to each individual in the group.
......@@ -39,7 +36,7 @@
you need to notify the lab instructor in writing and
sign the group slip-up form (see Appendix).
Lab{\em n} ({\em n=1,2,3,4,5}) group split-up form needs to
be submitted to the lab instructor by 4:30pm Thursday in the week that Lab{\em n} has
be submitted to the lab instructor by 16:30 EST Thursday in the week that Lab{\em n} has
scheduled lab sessions.
If you are late to submit the split-up form,
then you need to finish Lab{\em n} as a group and submit
......@@ -51,14 +48,14 @@
\begin{center}
\begin{tabular}{|p{4cm}|l|l|l|}
\hline
Deliverable & Weight & Lab Session Week & Post-Lab Deliverable Deadline \\ \hline
Group Sign-up & \verb+2%+ & N/A & 22:00 Friday in Week 2 \\ \hline
Deliverable & Weight & Project Session Week & Post-Lab Deliverable Deadline \\ \hline
Group Sign-up & \verb+1%+ & N/A & 22:00 Friday in Week 2 \\ \hline
% % % % % The following is for Spring term
LAB 1 & \verb+18%+ & Week 3 & 22:00 2 days after the lab session \\ \hline
LAB 2 & \verb+20%+ & Week 5 & 22:00 2 days after the lab session \\ \hline
LAB 3 & \verb+20%+ & Weeks 8 & 22:00 Sunday after the lab session \\ \hline
LAB 4 & \verb+20%+ & Week 10 & 22:00 Sunday after the lab session \\ \hline
LAB 5 & \verb+20%+ & Week 12 & 22:00 Sunday after the lab session \\ \hline
LAB 1 & \verb+20%+ & Week 3 & 22:00 Tuesday in Week 4 \\ \hline
LAB 2 & \verb+17%+ & Week 5 & 22:00 Tuesday in Week 6 \\ \hline
LAB 3 & \verb+30%+ & Weeks 8 & 22:00 Tuesday in Week 9 \\ \hline
LAB 4 & \verb+17%+ & Week 10 & 22:00 Tuesday in Week 11 \\ \hline
LAB 5 & \verb+15%+ & Week 12 & 22:00 Tuesday in Week 13 \\ \hline
% % % % % The following is for Fall term that starts on a Thursday!!!!
%LAB1 & \verb+8%+ & Week 0 and 1 & 10:00pm Wednesday in Week 2 \\ \hline
%LAB2 & \verb+30%+ & Weeks 2, 3, 4 and 5 & 10:00pm Wednesday in Week 6 \\ \hline
......@@ -73,52 +70,33 @@ LAB 5 & \verb+20%+ & Week 12 & 22:00 Sunday after the lab session
%LAB4 & \verb+4%+ & 11:59pm Jul. 08th & LAB4\_Gid.zip \\ \hline
%LAB5 & \verb+6%+ & 11:59pm Jul. 22nd & LAB5\_Gid.zip \\ \hline
\end{tabular}
\caption{Project Deliverable Weight of the Lab Grade, Scheduled Lab Sessions and Deadlines.}
\caption{Project Deliverable Weight Distribution, Scheduled Lab Project Sessions and Deadlines.}
\label{tb_deadline}
\end{center}
\end{table}
\section*{Lab Assignments Grading and Deadline Policy}
\section*{Lab Projects Grading and Deadline Policy}
Labs are graded by lab TAs based on the rubric listed in each lab. The weight of each lab towards your final lab grade is listed in Table \ref{tb_deadline}.
\begin{itemize}
\item {\bf Lab Assignment Preparation and Due Dates.}
\item {\bf Lab Project Preparation and Due Dates.}
Students are required to prepare the lab well
before they come to the schedule lab session.
{\em Pre-lab deliverable for each lab is due by the scheduled lab session starting time}.
During the scheduled lab session, we either provide
in lab help or conduct lab assignment evaluation
or do both at the same time.
During the scheduled lab session, we provide in lab help.
%Post-lab deliverables are normally due on Wednesdays in the week after the scheduled lab session.
The detailed deadlines of post-lab deliverables
are displayed in Table \ref{tb_deadline}. Note the reading/study week is not counted as a week in the table.
%Please note that different lab sections have different deadlines.
%Table \ref{tb_deadline} lists the Post-lab deliverable deadlines.
%{\em Please be advised that lab sessions during the midterm week
% are cancelled.}
\item {\bf Lab Assignment Late Submissions.}
Late submission is accepted within five days after the deadline of the lab.
No late submission is accepted five days after the lab deadline.
\item {\bf Lab Project Late Submissions.}
Late submission is accepted within two days after the deadline of the lab.
No late submission is accepted two days after the lab deadline.
There are five grace days \footnote{Grace days are calendar days. Days in weekends are counted.}
that can be used for some post-lab deliverables late submissions
\footnote{A post-lab deliverable that does not accept a late submission
will be clearly stated in the lab assignment description.
Labs whose evaluation requires demonstrations do not accept late submissions
of the code.}.
A group split-up will consume one grace day.
After all grace days are consumed, a \verb+10%+ per day late submission penalty will be applied.
However if it is five days after the lab deadline, no late submission is accepted.
%automatically get a grade of zero.
%You will get a bonus mark of {\em N\%}of your entire lab mark,
%where {\em N} is the number of grace days you do not use.
%When you use up all your grace days,
%a 10\% per day late penalty will be applied to a late submission.
%Please be advised that to simplify the book-keeping,
%late submission is counted in a unit of day rather than hour or minute.
%An hour late submission is one day late,
%so does a fifteen hour late submission.
However if it is two days after the lab deadline, the lab project grade is zero.
\item {\bf Lab Re-grading.}
To initiate a re-grading process, contact the grading TA in charge first. The re-grading is a rigid process. The entire lab will be re-graded. Your new grades may be lower, unchanged or higher than the original grade received. If you are still not satisfied with the grades received after the re-grading, escalate your case to the lab instructor to request a review and the lab instructor will finalize the case.
\end{itemize}
......@@ -142,7 +120,7 @@ It is not permitted to post your lab assignment solution source code or lab repo
\footnote{Our past experiences show that the number of questions spike when deadline is close.The teaching staff will not be able to guarantee one business day response time when workload is above average, though we always try our best to provide timely response.}.
{\em There is no guarantee on the response time to questions of a lab that passes the submission deadline}.
\item{\bf Office Hours.}
The Learn system calendar gives the office hour details.
We will guarantee four hours of office hours for each project. These hours require appointment booking. How to book them will be announced throughout the term.
\item{\bf Appointments.}
Students can also make appointments with lab teaching staff should their problems are not resolved by discussion forum or during office hours. The appointment booking is by email.
......@@ -155,20 +133,8 @@ It is not permitted to post your lab assignment solution source code or lab repo
Please note that teaching staff will not debug student's program for the student. Debugging is part of the exercise of finishing a programming assignment. Teaching staff will be able to demonstrate how to use the debugger and provide case specific debugging tips. Teaching staff will not give direct solution to a lab assignment. Guidances and hints will be provided to help students to find the solution by themselves.
\end{itemize}
%\begin{table}
%\begin{center}
%\begin{tabular}{|l|l|p{5cm}|l|}
%\hline
%Time (even weeks only) & Location & Name & email ID \\ \hline
%TBA & DC-2631 & Yiqing (Irene) Huang & yqhuang\\ \hline
%TBA & E5-5122 & Anas Abognah & aabognah \\ \hline
%TBA 10:30-11:30 & E5-4121 & Jean-Christophe Petkovich & j2petkovich\\ \hline
%\end{tabular}
%\caption{Bi-weekly Office Hour Schedule}
%\label{tb_office_hour}
%\end{center}
%\end{table}
\iffalse
\section*{Lab Facility After Hour Access Policy}
After hour access to the lab will be given to the class
when we start to use the Keil boards in lab.
......@@ -180,6 +146,7 @@ No food or drink is allowed in the lab.
Please be informed that you may share the lab with other classes.
When resources become too tight, certain cooperation is required
such as taking turns to use the stations in the lab.
\fi
%%% Local Variables:
%%% mode: latex
......
......@@ -6,7 +6,7 @@
There are a group of Linux Ubuntu servers that are open to ECE undergraduate students. The machines are listed at url: \url{https://ece.uwaterloo.ca/Nexus/arbeau/clients}. To access one of the machines, we recommend to use the alias name of \verb+eceubuntu.uwaterloo.ca+, which will direct the user to the most lightly loaded machine at the time of login.
To access these machines from off campus. One way is to use the \href{https://uwaterloo.ca/information-systems-technology/services/virtual-private-network-vpn}{campus VPN}.
Another way is to first connect to \verb+ecelinux4.uwaterloo.ca+ or \verb+eceterm.uwaterloo.ca+ and then connect to other Linux servers from there. Note that the \verb+ecelinux4+ should not be used for computing jobs, it is for accessing other Linux servers on campus.
Another way is to first connect to \verb+eceterm.uwaterloo.ca+ and then connect to other Linux servers from there. Note that the \verb+eceterm+ should not be used for computing jobs, it is for accessing other Linux servers on campus.
\section{Connecting to Linux servers}
......@@ -62,7 +62,7 @@ First, a program is started from source code written by programmers. Second, the
\begin{tabular}{llll}
\hline
Task & Tool & Examples\\ \hline
Editing the source code & Editor & vi, emacs \\
Editing the source code & Editor & vi, emacs\\
Compiling the source code & Compiler & gcc \\
Debugging the program & Debugger & gdb, ddd \\ \hline
\end{tabular}
......@@ -205,6 +205,11 @@ We use Git version control software. It is installed both on the Linux servers a
%Table \ref{} lists some frequently used git commands.
\subsection{Integrated Development Environment}
Visual Studio Code has been installed on all ECE ubuntu servers. Use the following command to invoke it. Note you will need X Windows support for the GUI interface.
\begin{lstlisting}[style=bash]
/snap/bin/code
\end{lstlisting}
\iffalse
Eclipse with C/C++ Plug-in has been installed on all ECE Linux servers. Type the following command to bring up the eclipse frontend.
\begin{lstlisting}[style=bash]
/opt/eclipse64/eclipse
......@@ -212,7 +217,7 @@ Eclipse with C/C++ Plug-in has been installed on all ECE Linux servers. Type the
This eclipse is not the same as the default eclipse under \verb+/usr/bin+ directory. You may find running eclipse over network performs poorly at home though. It depends on how fast your network speed is.
If you have Linux operating system installed on your own personal computer, then you can download the eclipse with C/C++ plugin from the eclipse web site and then run it from your own local computer. However you should always make sure the program will also work on ecelinux machines, which is the environment TAs would be using to test your code.
\fi
\section{Man Page}
Linux provides manual pages. You can use the command \verb+man+ followed by the specific command or function you are interested in to obtain detailed information.
......
%%%%%%%%%%%%% PREEMBLE HEADER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%==========================================================
% 1. DOCUMENT TYPE AND OPTIONS
%==========================================================
\documentclass[letterpaper, 12pt]{article}
%==========================================================
% 2. PACKAGES
%==========================================================
\usepackage{palatino} % Use Palatino fonts
\usepackage{amsmath} % Add extra math functions
\usepackage[margin=1.5cm, % Page layout specification
vmargin={0pt, 1cm},
includefoot]{geometry}
\usepackage{hyperref} % Enable text hyperlink
\hypersetup{
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
%urlcolor=cyan,
%filecolor=magenta, % links to local file
}
\urlstyle{same} % link fonts follow the same style as the rest of text
\usepackage{graphicx} % Enable graphics importation
\usepackage{float}
\usepackage{subfigure} % Enable subfigure
\usepackage{wrapfig} % wrapping text around figure
\usepackage{booktabs}
\usepackage{listings} % code listing
\usepackage{color} % colored font in listing
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% End:
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment