This textbook is intended for an intermediate-level software development course at the undergraduate level that teaches software engineering principles and practice following the Agile philosophy.
The textbook provides resources for both the instructor and their students. Course preparation materials are provided for the instructor and class presentation slides, assignments, and take-home exams are provided for students.
However, instructor could email the authors (cgunay or adolocm at gmail.com) to get access to hidden materials such as quizzes.
The content is rendered and published using a static site generator (or Jamstack) system called Hugo. It is primarily built by combining two Hugo themes, Techdoc and reveal-hugo. Techdoc provides the documentation-style browsing of book chapters and reveal-hugo provides the capability of online accessible chapter presentations using the reveal.js technology.
The generated site can then be hosted on any static host (such as Github Pages or Netlify). The original repository is rendered and hosted on Github Pages and it is automatically generated at each push by using Github's Actions feature. You can see it in action in this example.
You can fork this repository on Github and customize the chapters and slides. See the links above to learn more about the different technologies used.
Once you fork this repository, Github will carry over the Github
Actions instructions needed for automatic deployment, but you would
need to click on the "Actions" tab and enable them again in the
fork. After this, you should see the "Hugo" action listed, which will
be executed after each of your commits. The action will run Hugo and
write its output to the root of the gh-pages
branch.
To enable Github Pages render this output, you need to go to the
Settings tab, scroll down and select to produce the pages from the
root folder of the gh-pages
branch.
Don't forget to edit the config.toml
file for changing variables
such as baseURL
, github_repository
, github_doc_repository
,
author
, course
, and google_analytics_id
.
Hugo's installation instructions can be found here. Hugo is available in most Linux package managers and homebrew, although the version found in package managers for Debian and Ubuntu is often outdated. The instructions also include a video for installing on Windows.
The Techdoc
and reveal-hugo
themes are included in the repository as git
submodules under the /themes/
directory. After cloning the repo, you will need
to run the following to download the submodules:
$ git submodule update --init --recursive
Then run the following to start the Hugo server:
$ hugo server
You should be prompted with a link to access the site in your browser. Hugo will automatically detect modified files, rebuild the site, and refresh your browser.
In the class presentations, the author
and course
front-matter
variables will take precendence over the values in the config.toml
file. They are used in the following
custom
Hugo shortcodes
that we defined:
-
reveal-titlepage
: Puts the chapter title, course name (course
parameter in page or inconfig.toml
file), authors (author
parameter), with an option to display a cover image, followed by thereveal-prevnext-links
shortcode. The default format for the title page and its contents, such as authors can be changed inlayouts/shortcodes/reveal-titlepage.html
. It accepts the following optional parameters with the regular HTML syntaxparam="value"
:figure
: Displays the cover image specified at given URL. If you create an image/static/images/image.jpg
, you can refer to it with the base URL like this:figure="/softdev2-resources/images/image.jpg"
.height
: Change the default height of"300px"
.class
: Change CSSclass
of thefigure
tag.link
: Make the figure a link to this URL.alt
: Provide an alternate text to image.title
: Create a<figcaption>
tag under the image.caption
: Setalt
and also write it under thefigcaption
.attr
: Attribution text, shows up after caption.attrlink
: Link for the attribution.
-
reveal-prevnext-links
: Inserts links to previous and next Reveal chapters, which are automatically determined by following the pages in the folders. It has no additional options.