STTP-Design.tex
changeset 0 6d71487a99d3
equal deleted inserted replaced
-1:000000000000 0:6d71487a99d3
       
     1 \documentclass{article}
       
     2 \title{Course Design Document\\Software Tools, Techniques and Practices\\for Engineering Studies}
       
     3 \author{Asokan Pichai\\Prabhu Ramachandran}
       
     4 \date{}
       
     5 \parindent=0pt
       
     6 \begin{document}
       
     7 \maketitle
       
     8 
       
     9 \subsection{Preamble} 
       
    10 \begin{description}
       
    11   \item[Version] 0.8
       
    12   \item[Purpose] This document captures the design of the Software
       
    13       Tools, Techniques and Practices course. This course is designed
       
    14       under the project on ``Adoption of Open Source Software in Science
       
    15       and Engineering Education'' at Indian Institute of Technology,
       
    16       Bombay funded by the National Mission on Education through
       
    17       Information and Communication Technology, Ministry of Human
       
    18       Resources Development under the thrust area of ``Adaptation and
       
    19       deployment of open source packages equivalent to MATLAB, ORCAD etc''.
       
    20 
       
    21   \item[Recipients] in no particular order
       
    22   \begin{enumerate}
       
    23      \item Kannan Moudgalya
       
    24      \item Venkatesh Choppella
       
    25      \item Madhu Belur
       
    26      \item Mani Bhushan
       
    27      \item Eric Jones
       
    28      \item Travis Oliphant
       
    29      \item Greg Wilson
       
    30   \end{enumerate}
       
    31 \end{description}
       
    32 \newpage
       
    33 
       
    34 \section{Specifications}
       
    35 \begin{description}
       
    36 
       
    37 \item[Audience] The course is meant for students of BE/BTech and ME/MTech programmes. While it is open to all students,
       
    38     it has been designed with students of non-CS, non-IT streams only.
       
    39 \begin{itemize}
       
    40 \item Separate courses will be designed along similar lines targetted to students of Bsc/MSc in Physics, Chemistry and Mathematics. These courses will predominantly but not necessarily use the same tools.
       
    41 \item For students of Statistics a broadly similar course using R will be designed. 
       
    42 \item Each of these courses will have a corresponding `Train the Teachers' course.
       
    43 \end{itemize}
       
    44 
       
    45 \item[Background] The students will possess good computer usage skills and some programming knowledge
       
    46 \begin{itemize}
       
    47 \item Good computer usage skills is typically using computers for preparing documents, sending email etc.
       
    48 \item Some programming knowledge is basic understanding of coding such as operators, assignments, conditionals, loops
       
    49     and functions.
       
    50 \item Knowledge of any specific language or operating system is NOT assumed.
       
    51 \end{itemize}
       
    52 
       
    53 \item[Context] Engineering students use computers for a large number of
       
    54     curricular tasks--mostly computation centred. However, they do not
       
    55     see this as coding or programming tasks and usually are not even
       
    56     aware of the tools and techniques that will help them to handle
       
    57     these tasks better. This results in less than optimal use of their
       
    58     time and resources. This also causes difficulties when it comes
       
    59     tocollaboration and building on other people's work. This program is
       
    60     intended to train such students in good software practices and tools
       
    61     for producing code and documentation.
       
    62 \end{description}
       
    63 
       
    64 \newpage
       
    65 
       
    66 \section{Course Objectives}
       
    67 \emph{Each objective is associated with a level in the Revised Bloom's
       
    68 Taxonomy - which is a standard pedagogic tool for curriculum planning,
       
    69 instructional delivery and assessment. Please refer to:
       
    70 http://www.apa.org/ed/new\_blooms.html for a one page explanation.} 
       
    71 
       
    72 
       
    73 After successfully completing the program, the participants will be able to:
       
    74 \begin{enumerate}
       
    75 \item \label{intro} understand how software tools work together and how they can be used in tandem to carry out tasks,\hfill \texttt{RBT U\phantom{p}}
       
    76 \item \label{cmd} use unix command line tools to carry out common (mostly text processing) tasks,\hfill \texttt{RBT Ap}
       
    77 \item \label{pdf} to generate professional documents, \hfill \texttt{RBT Ap}
       
    78 \item \label{VC} use version control effectively--for both code and documents,\hfill \texttt{RBT Ap}
       
    79 \item \label{scr} automate tasks by writing shell scripts and python scripts,\hfill \texttt{RBT Ap}
       
    80 \item \label{sty} realise the impact of coding style and readbility on quality,\hfill \texttt{RBT U\phantom{p}}
       
    81 \item \label{py} write mid-sized programs that carry out typical engineering/numerical computations such as those that involve (basic) manipulation of large arrays in an efficient manner,\hfill \texttt{RBT Ap}
       
    82 \item \label{plot} generate 2D and simple 3D plots, \hfill \texttt{RBT Ap}
       
    83 \item \label{dbg} debug programs using a standardised approach,\hfill \texttt{RBT Ap}
       
    84 \item \label{test} understand the importance of tests and the philosophy of Test Driven Development,\hfill \texttt{RBT U\phantom{p}}
       
    85 \item \label{unit} write unit tests and improve the quality of code.  \hfill \texttt{RBT Ap}
       
    86     \end{enumerate}
       
    87 \section{Assessment Strategies}
       
    88 We will use tests and quizzes during the course and an end of course project to evaluate the degree of achievement of the objective. The projects will be be individual but sufficient hooks will be built into projects that the participants need to work together. Such hooks will be in the nature of building dependencies--A's code will call B's function etc--rather than making people work in teams.
       
    89 
       
    90 \section{Module Plan}
       
    91 The objectives listed against the modules may be covered only partially in that module. In other words, each module may cover one or more objectives fully or partially. And each objective may be handled in one or more modules--partially or fully. 
       
    92 
       
    93 \begin{tabular}{||l|l|l|r||}\hline\hline
       
    94 Seq & Module  & Course Objectives & Duration\\
       
    95 Num & Name    & Covered           & (Hours)\\\hline 
       
    96 1 & Using Linux Tools        & \ref{intro}, \ref{cmd}, \ref{scr}, \ref{dbg} and  \ref{test} & 7\\\hline
       
    97 2 & Basic Python Programming & \ref{scr}, \ref{sty}, \ref{dbg} and \ref{test}               & 8\\\hline 
       
    98 3 & LaTeX                    & \ref{pdf} and \ref{scr}                                      & 2\\\hline
       
    99 4 & Version Control          & \ref{VC}                                                     & 2\\\hline
       
   100 5 & Coding Style \& Approach & \ref{sty} and \ref{test}                                     & 2\\\hline
       
   101 6 & Test Driven Development  & \ref{test}, \ref{unit}, \ref{cmd} and \ref{scr}              & 4\\\hline
       
   102 7 & Advanced Python          & \ref{py}, \ref{dbg}, \ref{plot} and \ref{test}               & 8\\\hline
       
   103 8 & Project                  & All applied                                                  & 6\\\hline
       
   104 \end{tabular}    
       
   105 
       
   106 Session Count = 39 + 1 Buffer
       
   107 \subsection*{Note}
       
   108 \begin{itemize}
       
   109     \item All sessions will be held in rooms where students are sitting before a computer.
       
   110     \item We will use \texttt{bzr} as the version control tool. The course materials will be duplicated with other tools
       
   111           such as \texttt{hg, git, svn}.
       
   112     \item It is expected that shell scripting covered in module 1 will act as a revision for basic programming
       
   113       concepts.
       
   114 \end{itemize}     
       
   115 
       
   116 \section{Module 1: Using Linux Tools}
       
   117 \label{ULT}
       
   118 \subsection{Module Objectives}
       
   119 After successfully completing this module a participant will be able to:
       
   120 	\begin{itemize}
       
   121 	\item Understand the design philosophy of *nix \hfill U\phantom{p}
       
   122 	\item Use Linux as their day-to-day operating system\hfill Ap
       
   123 	\item Use the text processing tools such as \texttt{grep, tr}\hfill Ap
       
   124 	\item Write and execute (bash) shell scripts\hfill Ap
       
   125 	\item Use a text editor comfortably\hfill Ap
       
   126 	\end{itemize}
       
   127 \subsection{Suggested Reading}
       
   128 \begin{enumerate}
       
   129 	\item "In the beginning..." by Neal Stephenson
       
   130 	\item "The Unix Programming Environment" by Kernighan and Pike
       
   131 \end{enumerate}
       
   132 \subsection{Session Plan}
       
   133 \begin{tabular}{llr}
       
   134 Session & Topic & Duration\\\hline
       
   135 1 & Introduction to the course                                       & ~5 mts\\
       
   136   & Historical background and implications. Why Unix?                & 10 mts\\
       
   137   & Getting started--logging in; \tt{ls, date, who, cd, mkdir}       & 10 mts\\
       
   138   & Getting help: \tt{apropos, man, info}                            & 10 mts\\
       
   139   & Basic file handling: \tt{cp, mv, rm}                             & 10 mts\\
       
   140   & First session buffer                                             & ~5 mts\\\hline
       
   141 
       
   142 2 & Command line arguments                                           & ~5 mts\\
       
   143   & Basic text processing: \tt{head, tail, cut, paste}               & 15 mts\\
       
   144   & Shell meta characters                                            & 10 mts\\
       
   145   & Looking at files: \tt{cat, less}                                 & ~5 mts\\
       
   146   & Directory structure: \tt{man hier, ls -l}                        & ~5 mts\\
       
   147   & Permissions and ownership, \tt{chmod, chown}                     & 10 mts\\\hline
       
   148 
       
   149 3 & Redirection and Piping                                           & 10 mts\\
       
   150   & More text processing: \tt{grep, tr}                              & 10 mts\\
       
   151   & Elementary regex: . ? * \^ \$ [ ]                                  & 15 mts\\
       
   152   & One liners: show lines n to m, show directories                  & 15 mts\\\hline
       
   153 
       
   154 4 & More text processing: \tt{join, sort, uniq}                      & 10 mts\\
       
   155   & Generating a word frequency list                                 & 10 mts\\
       
   156   & Basic editing and editors: vim, scite                            & 10 mts\\
       
   157   & Personalising your environment: \tt{.bashrc, .vimrc}             & 10 mts\\
       
   158   & Subshells and \tt{source}                                        & 10 mts\\\hline
       
   159 
       
   160 5 & More tools: \tt{tar, zip, diff, cmp, comm}                       & 25 mts\\
       
   161   & Environment variables, \tt{set}                                  & 10 mts\\
       
   162   & Writing simple shell scripts                                     & 15 mts\\\hline
       
   163 
       
   164 6 & Control structures and operators in bash                         & 20 mts\\
       
   165   & Writing shell scripts                                            & 30 mts\\\hline
       
   166 
       
   167 7 & Functions in bash scripts                                        & 20 mts\\
       
   168   & Assessment Test                                                  & 30 mts\\\hline\hline
       
   169 \end{tabular}
       
   170 
       
   171 \section{Module 2: Basic Python Programming}
       
   172 \label{BPyP}
       
   173 \subsection{Module Objectives}
       
   174 After successfully completing this module a participant will be able to:
       
   175 	\begin{itemize}
       
   176             \item write modular, procedural code in python, \hfill RBT Ap
       
   177             \item understand the functional features of python, \hfill RBT U\phantom{p}
       
   178             \item understand the object model of python, \hfill RBT U\phantom{p}
       
   179             \item write programs using objects \hfill RBT Ap
       
   180 	\end{itemize}
       
   181 \subsection{Suggested Reading}
       
   182 \begin{itemize}
       
   183     \item Python tutorial available at http://www.python.org/doc/tut
       
   184     \item ``Dive into Python'' by Mark Pilgrim
       
   185 \end{itemize}
       
   186 
       
   187 \begin{tabular}{llr}
       
   188 Session & Topic & Duration\\\hline
       
   189 1 & Introduction to the Python language. Philosophy           & 25 mts\\
       
   190   & The interpreter(\texttt{ipython}--python as calculator        & \\
       
   191   & Editing and running a .py file                            & \\
       
   192   & Basic data types and operators: Numeric and string        & \\
       
   193   & Syntax: \tt{while, if, raw\_input(), int(), def}          & \\
       
   194   & Problem set 1                                             & 25 mts\\\hline
       
   195 
       
   196 2 & lists and tuples: basic operations                        & 15 mts\\
       
   197   & Syntax: \tt{range(),for, len()}                           & \\
       
   198   & Code Reading: Example set 1                               & 10 mts\\
       
   199   & Problem set 2                                             & 25 mts\\\hline
       
   200 
       
   201 3 & Strings: basic operations                                 & 10 mts\\
       
   202   & Introduction to the standard library                      & \\
       
   203   & I/O: reading and writing files                            & 15 mts\\
       
   204   & Problem set 3                                             & 25 mts\\\hline
       
   205 
       
   206 4 & Dictionaries: basic operations                            & 10 mts\\
       
   207   & Modules and code organization                             & 10 mts\\
       
   208   & Executing modules as scripts: \texttt{\_\_main\_\_}       &\\
       
   209   & \texttt{import} and overview of major modules             & 15 mts\\
       
   210   & Problem set 4                                             & 15 mts\\\hline  
       
   211 
       
   212 5 & Interim Assessment                                        & 30 mts\\
       
   213   & Functional approach: overview                             & 25 mts\\
       
   214   & \texttt{map, filter, reduce} and list comprehensions      & \\\hline
       
   215 
       
   216 6 & Classes and Objects                                       & 20 mts\\
       
   217   & Writing Object-oriented code                              & 30 mts\\
       
   218   & Code Reading: Example set 2                               &\\\hline
       
   219 
       
   220 7 & Case Studies:                                             & 50 mts\\
       
   221   & png notation                                              &\\              
       
   222   & result html generation                                    &\\\hline
       
   223 8 & Assessment                                                & 50 mts\\\hline\hline
       
   224 \end{tabular}
       
   225 
       
   226 \end{document}