% swe1root.tex
%
% Top Level Course Notes for Software Engineering 1.
%
% This is prepared as a LaTeX file, but is actually intended to
% be processed into HTML, using latex2html, for access via WWW.
%
% Barry McMullin.

\documentstyle[html]{article}

\newcommand{\C}{{\bf C}}
\newcommand{\atwork}{\htmladdimg{at_work.gif} (Under Construction...)}
\newcommand{\tty}[1]{{\bf #1}}

\begin{document}

\title{Software Engineering 1: Course Notes}
\author{Barry McMullin}
\date{Last Modified: 23rd February 1996}
\maketitle

\begin{quote}
Note that this complete document is available in
\htmladdnormallink{LaTex}{swe1root.tex}
and plain \htmladdnormallink{ASCII}{swe1root.txt} forms.  Thus, you can
download the document and browse it offline.\footnote{LaTeX is a
  typesetting mark-up language, particularly suitable for hierarchically
  organised documents, and documents using mathematical notation
  extensively.  It is a de-facto standard in academic publishing. A
  LaTeX source file is still a form of ASCII, but with typesetting
  commands interspersed with the "raw" text.  In principle it can be
  read with any tool which can display ASCII files. However, note that
  this, and other online text documents, may be too large to
  load into the MS-Windows \tty{NotePad} application. In such cases, you
  will need to use some alternative viewing tool, such as the
  \htmladdnormallink{Programmer's File
  Editor}{ftp://ftp.hea.ie/pub/windows/programr/pfe0507.zip}. This is a
  powerful (and free!) professional text editor for Windows. It does the
  same job as NotePad, but much better!}
\end{quote}

This is the top-level, online, hypermedia documentation for the course
{\em Software Engineering 1}.

This is a required course for all students enrolled on Stage~1 of
the
\htmladdnormallink{B.Eng.\ (Electronic Engineering)}
{http://www.eeng.dcu.ie/eenghome/ee_info/ee_info.html} or
B.Eng.\ (Telecommunications Engineering) programmes
offered by the
\htmladdnormallink{School of Electronic Engineering}
{http://www.eeng.dcu.ie/eenghome/eenghome.html} of
\htmladdnormallink{Dublin City University}
{http://www.compapp.dcu.ie/DCU_home.html}.

\htmladdimg{at_work.gif} These online notes are under construction, and
may be incrementally extended and corrected as the year progresses.

\section{Introduction}

The course provides an introduction to {\it Software
Engineering\/} - which is to say the skill of developing {\em
software\/} or {\it programs\/} for digital computers.

The vast majority of modern technological products - from
dishwashers to communications satellites, CD players to
industrial robots - include at least one, and often many more,
embedded {\it microprocessors}.  A microprocessor is the central
processing component of a general purpose computer, implemented as
a single integrated circuit (IC).  The specific behaviours or
functionalities of the completed product are then realised by
providing these microprocessors with appropriate sequences of
instructions, or {\it software}. Software is thus a crucial
foundation for virtually all modern technological products - and
software development is an essential and pervasive skill for
every engineering discipline. This is reflected in the design of
the engineering programmes in DCU, where Software Engineering
takes a prominent role all stages - beginning with this
very important introductory course.

The objective of the course is that, on completion, you
should be able to design, code, test and debug small, but
complete, programs. The course introduces a modern high level
procedural language (ANSI C), supported on a general purpose
computing platform (ISA hardware, running MS-DOS and MS-Windows).

The course is preparatory in nature, providing necessary
foundations for a variety of courses in subsequent stages of the
relevant programs.

\section{Syllabus}

\atwork

This section is subject to further revision.

\begin{description}

\item[Background:] Introduction to stored program digital
computers.  Historical perspectives.  The nature of software
engineering: issues of cost, reliability and efficiency. The
von~Neumann architecture, and the idea of a sequential machine.
Evolution of computers and programming languages.

\item[Characters and Text:] Computerised text. Characters and
character sets. The 7-bit ASCII character set. Text files. Text
editing. Directories. Text files as computer programs: the
concepts of translation, execution, and debugging. The use of
an Integrated Development Environment (IDE).

\item[Identifiers:] Concept of {\it identifiers}. File and
directory names as identifiers. Identifier uniqueness. Syntax of
identifiers in \C\ programs. Reserved identifiers
in \C\ (keywords). Conventions and guidelines on identifier usage.

\item[Data:] Concepts of data type, constants, and variables.
Type \tty{int}. \tty{int} constants and range. Declaring
variables.

\item[Operators:]
Arithmetic operators:
\tty{+} (addition),
\tty{-} (subtraction),
\tty{*} (multiplication),
\tty{/} (quotient),
\tty{\%} (remainder).
Negative operands: direction of quotient truncation and sign of
remainder. Exceptions: overflow and divide-by-zero. \tty{int}
values corresponding to "truth" and "falsehood".
Equality operators:
\tty{==} (equal to),
\tty{!=} (not equal to).
Relational operators:
\tty{>} (greater than),
\tty{>=} (greater than or equal to),
\tty{<} (less than),
\tty{<=} (less than or equal to).
Logical operators:
\tty{\&\&} (AND),
\tty{||} (OR),
\tty{!} (negation).

\item[Expressions:] Forming expressions. Concept of expression
evaluation. Sequential nature of expression evaluation. Order of
evaluation: operator precedence and associativity; forcing
associativity with parentheses.

\item[Assignment:] The concept of assignment. Operator side
effects. The assignment operator (\tty{=}): evaluation and side
effects. Increment (\tty{++}) and decrement (\tty{--}) operators.
Type \tty{unsigned int}; type conversion.

\item[Programs:] Skeleton structure of a \C\ program: the
\tty{main} function. Declarations and statements. Comments. The
concept of flow of control. Types of statements: expression,
\tty{if}, \tty{if-else} and \tty{switch} statements. Compound
statements. The idea of iteration and the \tty{while} statement.
Symbolic constants and \tty{\#define}. Input and output by direct
modification and examination of variables within an {\it Integrated
Development Environment}. Monitoring execution: tracing and breakpoints.

\item[Development Cycle:] Specification. Algorithm design.
Coding. Compilation and linkage. Testing: selection of test
cases. Exception handling. Defensive design. Debugging.

\end{description}

\section{Instructors}

The lecturers for the course are
\htmladdnormallink{Dr.\ Barry McMullin}
{http://www.eeng.dcu.ie/\%7Emcmullin/home.html},
and \htmladdnormallink{Mr. John Whelan}
{http://www.eeng.dcu.ie/\%7Esneville/john.html}.

The laboratory demonstrators are
{\it Fiona Murray} and {\it Peter Hillary}.

\section{Textbook}
\label{textbook}

\atwork
The course textbook is currently under review.  The textbook
used in 1994-95 proved to be unsatisfactory in various ways, and
alternatives are being considered.  A textbook will not be
required until term 2 in any case.

\section{Tutorials}

\label{tutorial}

A voluntary, "walk-in", tutorial will be offered
each week.  This is currently scheduled for Tuesday, 
from 10.00--11.00 pm, in the CAE lab - however, this is likely
to change. Tutorials will {\em not} begin before week 5 of term
1. At least one of the
instructors and/or demonstrators will be present at this time.  This is
an excellent opportunity to look for help in completing any lab
exercises which you have outstanding, particularly if you are stuck with
some problem you simply can't seem to overcome.

You can, of course, submit queries by e-mail at any time (see
\htmlref{Feedback}{feedback}); but this may be impractical for various
reasons (e.g., if your problem is that you can't get the mail system to
work!). In such cases, the tutorial is your opportunity to get the
problem sorted.

\section{Assessment}

The course will be assessed by way
of two supervised {\it Laboratory Examinations}. 
The first of these will take
place early in Term 2, the second at the end of Term 3. The
overall subject mark will be a weighted sum of the marks achieved in
these two examinations: 25\% from the first, 75\% from the second.

The format of the examinations will
be very similar to the format of the normal lab exercises. Each student
will work alone. The examinations will be of three hours duration.
Instructions will be accessed via the \tty{World Wide Web}.
The work to be done will be derived from work done during the normal lab
sessions - though it will, of course, differ in detail. A report will
be required, submitted electronically. This report will form the basis for
marking the examination.

Detailed information on the format of the report, and the marking
scheme to be used, are available in the
\htmladdnormallink{Laboratory Report Guidelines}
{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/rptfmt/rptfmt.html}.

It was originally intended that students {\em repeating\/} this course
1995/96 would be required to sit {\em both\/}
lab examinations, in exactly the same way as students attending
for the first time.\footnote{The course was 
assessed by written exam up to
1993-94; an option of written exam was offered to repeat
students in 1994-95;  that option is now formally ceased, and
is  {\em not} available in 1995-96.}
However, there are some differences in detail in the material
being examined in the first lab exam in 1995/96 compared to
1994/95.  In the light of this, the examination requirements 
for {\em repeat} students have now been relaxed and amended as
follows:

\begin{enumerate}

\item Repeat students are {\em not} required to sit the first Lab
   examination.  Instead they may sit only a special final lab
   examination, which will be of similar content and format
   to the final lab examination for 1994/95, and will count
   for 100\% of the repeat mark.  

\item Alternatively, at their own option, repeat students 
   {\em may} opt to be assessed on exactly the same basis as first
   time students, sitting both lab exams, with the standard
   marking allocation (25\% + 75\%) between them.  Note carefully 
   that these examinations {\em will} be based on the material 
   presented in 1995/96, and this does differ in some respects 
   from that presented in 1994/95.  Specifically, in 1995/96,
   a special software module (\tty{safe-c}) has been used. This
   provides certain simplified facilities in a packaged
   form.  This also relies on the use of a different \tty{C}
   compiler (GNU cc). Repeat students opting to sit the same
   lab exams as first time students must ensure that they 
   familiarise themselves with this module, with the GNU cc
   compiler and with the specific lab exercises assigned in 
   session 1995/96.  All the relevant reference information is 
   available in the normal way on the School Web site.
\end{enumerate}

If you are a repeat student, it will be assumed that you are 
accepting assessment by model 1 above, unless you indicate
otherwise, in writing, to the faculty administrative
Assistant Ms. Valerie Hogg no later than 20th December 1995.


\section{Feedback}

\label{feedback}

The preferred way of giving feedback on any aspect of the course
via the
\htmladdnormallink{SOFTENG1-95}
{http://www.eeng.dcu.ie/\%7Emajordom/softeng1-95.info.html}
electronic mailing list.  You can monitor
postings to this list (and responses) in the
\htmladdnormallink{archives}
{http://www.eeng.dcu.ie/\%7Emajordom/hm_archives}.  
You send email to the mailing list by addressing it to
\htmladdnormallink{SOFTENG1-95@mjmail.eeng.dcu.ie}
{mailto:softeng1-95@mjmail.eeng.dcu.ie}.

If appropriate, you can give me private feedback on any aspect
of the course, or ask questions etc., by sending e-mail to
\htmladdnormallink{mcmullin@eeng.dcu.ie}
{mailto:mcmullin@eeng.dcu.ie}. I normally check this mailbox at
least once every day, and will respond as quickly as I can. 
This is far and away the most reliable and effective way of
getting in touch with me.

\section{On-Line Resources}
\label{online}
The following additional materials are available in separate
online documents:

\begin{itemize}

%\item \htmladdnormallink{General Lecture Notes}
%{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/swe1lctr/swe1lctr.html}

%\item \htmladdnormallink{The C Standard Library}
%{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/stdlib/stdlib.html}

\item \htmladdnormallink{Laboratory Exercises}
{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/swe1labs/swe1labs.html}:
These are the notes for the individual lab sessions.

\item \htmladdnormallink{General Examination Instructions}
{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/95-96/exams/general}:
These are the general instructions for the Laboratory
Examinations.  This document includes links to specific
examination exercises - which, of course, become active
only during the examination sessions.

\item \htmladdnormallink{Laboratory Report Guidelines}
{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/rptfmt/rptfmt.html}:
These are the guidelines for the preparation and submission
of the formal lab reports.

\item \htmladdnormallink{C Source File Directory}
{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/src/}: This directory
provides access to C source files introduced in the
lectures, as the course progresses.

\item \htmladdnormallink{The safe-c User Guide}
{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/safe-c/}: This
is the detailed technical documentation for the \tty{safe-c}
module, which is a collection of \C\ entities (data types,
constants, functions) to facilitate introductory \C\
programming.

\item \htmladdnormallink{The C Standard Library}
{http://www.eeng.dcu.ie/\%7Emcmullin/swe1/stdlib/}: This
provides {\em introductory} documentation 
for the \tty{C Standard Library}.

\item \htmladdnormallink{DJGPP}
{http://www.delorie.com/djgpp}: \tty{DJGPP} is a port
(version) of the \tty{GNU C Compiler} for the PC
platform.  This is the compiler which we will be generally
using in this course.  This node provides access to all
the online documentation for \tty{DJGPP}.

\end{itemize}

There is also a very wide range of resources available elsewhere
on the Internet, on
the subjects of \C\ and {\bf C++} programming. Pointers to many of these
have been collected on the Web Page called
\htmladdnormallink{Learn C/C++ Today}{http://vinny.csd.mu.edu/learn.html}.
If you are looking out for further elaboration or alternative approaches
to the C language I strongly recommend that you have a browse through
the materials identified by this site.

\section{Copyright}

This Hypermedia Document is copyrighted, \copyright\ 1994, 1995, by
\htmladdnormallink{Barry McMullin}
{http://www.eeng.dcu.ie/\%7Emcmullin/home.html}.

Permission is hereby granted to access, copy, or store this work, in
whole or in part, for purposes of individual private study only. The
work may {\em not\/} be accessed or copied, in whole or in part, for
commercial purposes, except with the prior written permission of the
author.

\end{document}
