.. 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

.. slideconf::
   :autoslides: False


===================
Course Introduction
===================

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

.. TODO::
   
   | Lesson Plan for Today:
   |    Virtual signup Sheet: Need some way to know who attended today.
   |    Force Adds: Everyone ought to be able to register online at
        HokieSpa, but there are always reasons why there is a
        problem. Talk to me about this so that we can get it resolved!
   |    Go over syllabus
   |    Dual nature of course: Programming vs. analytical material
   |       - If you can do well at these projects, then you are ready to work
             at any software house in the world w.r.t. programming skills
   |       - Superficial understanding of "data structures" is trivially
             easy. Don't fool yourself.
   |       - Real understanding of the content, especially analysis, is a
             challenge.
   |    OpenDSA: This IS the textbook
   |       - In Canvas, follow the link to the other Canvas shell, then click
             on "Modules" to see the TOC.
   |       - Mastery-based [So likely to get all credit]
   |       - "Impossible to cheat" philosophy (can only cheat yourself)
   |       - Work a little bit every day (will really help at study time)
   |       - Homework assignments roughly once/class, on short schedule
             (typically required reading before a lecture, or within a day or
             two after)
   |       - NOTE FIRST HW ASSIGNMENT -- INTRO CHAPTER DUE THURSDAY EVENING]
   |    P1 spec posted, start reading. We will discuss background material
        on Thursday. You need to be ready for that discussion with
        understanding the project context.
           - First P1 milestone will be due next week (Details will be
             posted on Piazza)
           - Partners: OK, but be careful!
   |    Programming:
   |       - How people fail the course
   |       - Keeping up, pacing
   |       - Incremental development
   |       - Web-CAT issues
   |       - Milestones
   | Homework:
   |    Look at Canvas course site
   |    Check out Piazza (register)
   |    Intro module in OpenDSA due by Thursday @ 11pm
   |    Look at P1 spec (posted to website). We will cover P1 in more
        detail at next class.
   | Course Content: Proceed to Intro chapter slides as time permits

.. slide:: Introduction

   What we are doing today:

   * Administration/Course mechanics
   * Course introduction (OpenDSA Chapter 1)

.. slide:: Administration/Course Mechanics

   * Do you have a ForceAdd issue?
   * Review of Canvas site:
      * Piazza, OpenDSA (our textbook), Eclipse, Web-CAT
   * Go over Syllabus

     
.. slide:: Course Role in the Curriculum

   | This course represents a transition between "learning to
     program" courses (CS 1114, CS 2114) and "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)
   |    Project management and testing
   |    Content, theory and analysis

   | The projects test programming 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.


.. slide:: OpenDSA

  * Access OpenDSA through Canvas->Modules

  * Lots of visualizations, exercises

  * Mastery-based approach

  * Homework due periodically through the semester


.. slide:: Web-CAT

  * Install the latest Eclipse
  * Get the updated Web-CAT plugin
  * Project submission from within Eclipse
  * Support for junit testing
  * Test suites evaluated by Mutation Testing
  * Auto-grading: Correctness, style (human grader for design)


.. slide:: Projects

  * The hardest part of this course!
     * 4 projects, 3-4 week lifecycle, 45% of course grade
     * Big enough that you need to practice good project management
       skills (Miletones help you to structure this)

  * Gaining testing proficiency is a key course objective
     * Junit testing to define test suite
     * Mutation Testing to evaluate test suite


.. slide:: Milestones

   * 4 projects, each with a 3-4 week life cycle
   * Most projects will have 3 milestones
      * Intermediate deliverables with due dates
      * First due at end of first week
      * Second due about 2 weeks before due date
      * Third due about 1 week 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.


.. slide:: Homework for Today

   * Look at Canvas
   * Look at Piazza site, make sure you are enrolled there
   * Look at Project 1 spec: Will discuss next time
   * Do Chapter 1 exercises in OpenDSA


.. slide:: Before you leave today

   * Talk to me if there is a Force Add issue


