.. This file is part of the OpenDSA eTextbook project. See
.. http://opendsa.org for more details.
.. Copyright (c) 2012-2020 by the OpenDSA Project Contributors, and
.. distributed under an MIT open source license.

.. avmetadata::
   :author: Cliff Shaffer

CS3114/5040 Introduction
========================

Role of CS3114/5040 in the Curriculum
-------------------------------------

.. revealjs-slide::

* This course represents a transition between "learning to
  program" courses (CS 1114, CS 2114) and "CS content" courses.

* To do well, you must be able to handle both

  * Programming (we focus on projects with dynamic memory allocation
    and file processing, and they have significant design challenges)

  * Content, theory and analysis

* The projects test programming and testing proficiencies

* OpenDSA exercises test knowledge of how algorithms work

* Exams test understanding of the theory (analysis)

.. note::

   Most graduates from our department will tell you that this is one
   of the two hardest courses, and also one of the two most important
   for job preparation. So its both high effort and high value.


Introduction
------------

.. revealjs-slide::

* What we are doing this week:

  * Administration stuff and Course mechanics
  * Course introduction (OpenDSA Chapter 1)
  * Project 1 Introduction


Course Mechanics
----------------

.. revealjs-slide::

* Course online support:

  * Canvas: Learning Management System
  * OpenDSA: eTextbook
  * Web-CAT: Project submission/automated grader
  * Piazza: Forums


Canvas
------

.. revealjs-slide::

* Course materials are organized and delivered through Canvas

  * Course syllabus
  * Link to OpenDSA eTextbook (which is a separate Canvas course shell)
  * Access to Project specs and supporting documents
  * Link to Piazza forum
  * Post scores and grades


OpenDSA
-------

.. revealjs-slide::

* Access OpenDSA eTextbook through a 2nd Canvas course shell
  (link from the course homepage)

* Lots of visualizations, exercises

* Mastery-based approach

* Homework due periodically through the semester

  * Small homework (Chapter 1) due at 11pm **this Friday**


Web-CAT
-------

.. revealjs-slide::

* Must use Eclipse IDE for submissions: Update if older than 2025
* Install the updated Web-CAT plugin

  * Be sure you use this semester's link to see the starter kits from
    the "Download Assignment" link

* Read OpenDSA Module 2.4 for details on setting up with Eclipse
* Web-CAT provides project submission support

  * Support for junit testing validation, mutation coverage
  * Auto-grading: Correctness (passes reference tests), style, test
    suite quality (mutation testing)


Projects and Milestones
-----------------------

.. revealjs-slide::

* 4 projects, each with a 3-4 week life cycle
* Most projects will have 3 milestones

  * Milestones are intermediate deliverables with due dates
  * First due typically due about a week or so into the project (your
    first milestone is due **next week**)
  * Second due typically about 10 days before due date
  * Third due typically about 4-5 days before due date

* Milestones designed to encourage incremental development
* In previous semesters, milestones had the effect of boosting the final
  grade of the middle third of the class by about a full letter grade.


Today's Homework
----------------

.. revealjs-slide::

* Look at Canvas, check out the various links
* Look at Piazza site, make sure you are enrolled there
* Make sure that you have Web-CAT access
* Look at Project 1 spec. Start setting up Eclipse.
* Do Chapter 1 exercises in OpenDSA by this week's due date

