CS401 | sw engineering
  • outline
  • projects
  • syllabus
  • links
Outline TENTATIVE SCHEDULE

  • OOP - "The Object-Oriented Thought Process", Fifth Edition by Matt Weisfeild, Addison-Wesley, ISBN-10: 0201760312 (currently available on OReilly/Safari library index --no garauntees for how long)
  • Java - "Java, How to program (early objects) Paul Deitel, Harvey Deitel, Pearson, (2017) 11th Edition ISBN: 9780134751962. (currently available on OReilly/Safari library index --no garauntees for how long)
  • SWE - "Clean Code: A Handbook of Agile Software Craftsmanship" , by Robert Martin, (2008) ISBN-13: 978-0132350884 (currently available on OReilly/Safari library index --no garauntees for how long)

 

 

NOTE: THIS IS NOT A STATIC PAGE -- until a week is covered new material can be added without my announcing it in class. If I add new material or corrrect material in a week we have covered I will do my best to announce it.



Materials
Week 1-2

1 Introduction to class & some basic concepts

Class Lecture,

    • Orientation Video (Spring 2024)
    • SW Engineering - Development an introduction

    • Survey of Programming

    • Some Course Objectives
    • Watch Uncle Bob Clean Code Video
    • Some Review OOP terms:
      • OOP: Objects
      • OOP: Classes
      • OOP: Interface

2 Intro to Java , IDE
Class Lecture, Java: Chapter 1-5
    • LECTURE: Java Overview/Intro : (Part 1 Video) AND ( Part 2 Video)
      • Applications  (simple, console)
      • VIDEO covering modules: Java Basics, Messages/Methods, Applications
      • "Java- basics" 
      • "Java- objects" 
      • "Java- arrays" 
      • "Java- Flow of Control"     
      • Java- methods part 1 and Part 2
      • "Java- packages" 


    • Java Files, CompilationRun Process and Basics on Commenting (Video)
      • Managed Code: Compilation + Interpretation
      • Java- files 
      • Commenting and Writing Style Expectations


    • IDE: IntelliJ Ultimate (get as a student free to use --NOT community version--)and some basics and Install tips/requirements
      • Using IntelliJ from JetBrains (from 2023)
      • Built in Database tool in IntelliJ (FYI, will not use this term)

    • Java Collections (data structures and algorithms)    ( Video)

Exercises:

  • Exercise 1:  Begining Application (demo to fellow classmate) -- as part of this you must have installed IntelliJ and Java SDK -- you can not due future work without this being done (not graded).

  • Exercise 2: Class w/variables & methods  
Week 3-4

5 OOP Design (a formalized review +)
Class Lecture, J - Chapter 8,9, OOP-chapter 1,2., 9, Clean Code - Chapter 10 (Classes)

    • OOP Concept Intro Lecture     as (Video)
      • Introduction
      • Modularity
      • Abstraction
      • Polymorphism
    • OOP Design Perspective & 3 Layer Architecture Model
      • VIdeo showing 3 Layer Architecture of a application in Java (separate packages for presentation, business and data classes)


     

4 SW Engineering- Requirements, Design, UML and Best Practices
Class Lecture, Java - Chapter 6-7,

    • Requirements Engineering & Analysis
    • Design
    • BestPractices website


    • Design Documents -
      • IEEE SW Project Management Plan - Design ++
      • Simpler alternatives: example from Best Practices and corresponding ULearn example
      • Design Concept (a "white paper") - example from Best Practices (this is pre-project planning/design)


    • UML lecture    as YouTube    as mp4
      • UML overview (webpages)
      • LucidChart (online) - see my example AND their info on UML
      • IntelliJ + UML (class diagrams only):this is a good tool to create UML class diagrams from existing code, not for design ahead of time


    • Example Design Case Study (generic and easy to understand and follow)

 

Exercises:

  • Brainstorming Group Work use Google JamBoard
  • Exercise 3 Design
Week 4-5

7 SW Management

Class Lecture, git Tutorial

    • git Lecture     as YouTube     as mp4

      • git - versioning control summary      
         
    • Repostiory "services": GitHub, Bitbucket


    • GitHub:
      • Git Hub Example our CS401 Hello World
      • Demo using Github + IDE with multi-user team (video)
      • GitHub ReadMe AND GitHub Wiki
        • example using our Hello World project: wiki and Readme



    • git & GitHub & IntelliJ
      • Git setup on IntelliJ project (READ the multiple links under IntelliJ + Git setup)
      • IntelliJ & GitHub account setup
      • My example of setting up project to with Git ( also read IntelliJ documentation various options - read "Put an existing project under Git version control" AND "Add a remote repository")
      • HOW to create a github repository from your github account (ONLY the team github master of your group will do this --you only need 1 repository that your team will SHARE) : 
      • Sharing the repository:  how the github master will add the other team members to a github repository as collaborators:
      • IntelliJ and Github - how to exclude files you DONT want to upload to github (like credentials login/password to access a database)


Exercise:

  • Exercise 4: GIT: (individual work). due Feb. 13 start of class setup GItHub and GIT w/ IntelliJ. Create GitHub repository to use Git and associate it with the remote GitHub repository by pushing the code you have currently created for your Exercise 2+ (this will help for Project 1). NOT GRADED

8 More SW Eng/OOP Metrics & Testing
Class Lecture, Java: Chapter 6-10
, Clean Code - Chapter 9 &15(Unit testing)

    Testing

    • Testing, Logging (JO-chapter 15) as YouTube     as mp4
    • Unit Testing,
    • Unit Testing featuring JUnit        JUnit 5 Documentation
      • Example on Junit (or search for your favorite
      • IntelliJ setting up new test class
        • AND IntelliJ setting up a directory to store tests (Test store root). You can put anywhere but, consider making a directory called test at the same level as the src folder in your project then right click and mark as test store root
      • IntelliJ Run ALL JUnit Tests Configuration
    • AndroidStudio and JUnit creation
    • Testing Frameworks (assigned to explore/read on own):
      • Cucumber: BDD- Behavior Driven Design:  implement important acceptance test scenarios while development is in-progress AND start with human understandable vocabulary focused on stakeholders:
        • IntelliJ w/ Cucumber Features of Cucumber that make it different.
        • bridge between business and technical language - creating a test case in plain English text.
        • test script to be written without knowledge of any code- allows the involvement of non-programmers
      • Robot: opensource general test automation framework, supports python and java. Can get plugin for IntelliJ (not tried)
        • getting started with Java and Robot

    Metrics+

    • Coupling
    • OOP Metrics
    • SW Engineering Development Process Metrics
      • using Code Climate for Metrics (integrates with GitHub, Bitbucket, Jira, Git, Slack)
    •  

      • Testing Code Coverage and watch video IntelliJ Test Code Coverage
        • IntelliJ Test Code Coveage Tool ---DO IT
      • Cost Etimates - one model- COCOMO

9 Code Styling  & Code Review
Clean Code Book: Chapter 1(intro), 2(naming conventions), 4(commenting), 17(examples of bad coding)

    • Code Styling
    • Code Review CheckList (one of many examples)
      • TIP Daily/Weekly Schedule: Sprint Meeting with team & Announce who needs Code Reviews, Next - Help with Code Reviews of others code, Next-Work on your scehduled work.
      • Code Review as Github Pull Request(video)
      • IntelliJ Line Code Coverage

     

20 Threads
Class Lecture, Java: Chapter 23, Clean Code - Chapter 13(Concurrency)

    • Lecture and webpage about threads in Java
    • Exercises: (OPTIONAL)
      • Play with Threads
      • not turned in: 2
      • NOTE: re-read I/O lecture example on Piped Streams

21 Exceptions
Class Lecture,  Java: Chapter 11, Clean Code- Chapter 7 (Error Handling)

    • Review - about exceptions
    • more

10 Input/Output  (on your own- asynchrounous)
Class Lecture, 
    • lecture,  Java IO basics  
    • Exercises  (OPTIONAL)
      • Exercise 5: I/O Reading (this will help with Project 1)
      • write file (not turned in)
      • Standard In/Out (not turned in)
      • read file (not turned in)
Week 6
11 Documentation JavaDoc and Packages 
Class Lecture,  JO-Chapter 2
    • On-line JavaDoc documentation,
      • comments
      • Example
      • Example JavaDoc for our HelloWorld Project
      • How to generate JavaDoc in IntelliJ  (Tools->Generate Javadoc)
      • Android Studio (Tools->Generate Javadoc)


    • GitHubPages - convert "github info of your repository to a website

    • Java packages

Exercise: 

  • Exercise 6 - javadoc: Using javadoc (this will help you for Project 1)

12 Inner classes and Generics
Class Lecture, Jav - CHapter 16, Clean Code- Chapter 6(Objects & Classes)
, OOP - Chapter 5,6

    • Inner Classes, as YouTube ,    as mp4
    • Generics in java

13 Scrum&Kanban and Communications
Class Lecture,
chapters of library's Safari book (Clean Agile: Back to Basics by by Robert C. Martin, Publisher: Prentice Hall,ctober 2019)

    • What is Agile Programming?
    • Agile Development Frameworks:(a few popular today):
      • Scrum OverView
      • Scrum and Kanban
        • Video: scrum versus kanban
      • Issues Boards (Kanban Boards)
      • More Agile Techniques - some examples
        • Rapid Application Development 
        • Extreme Programming

    • Tools:
      • GitHub Project Management:(overall) Video-example
        • Issues (you can create from issues tab or from a project), Note Issues can not have due dates but, the Milestones they belong to can.
        • GitHub Projects (you can have 1 or more projects associated with a repository) - how to create
        • GitHub Milestones (groupings of issues )

      • Zenhub [project management integrates into GitHub web interface --issue tracking, plan sprints(scrum) , Release Reports, Velocity Tracking, and Burndowns ],
        • demo
      • Trello (Kanban Boards software) from Atlassain (own Bitbucket)
      • Jira (supports both Kanban and Scrum) from Atlassain (own Bitbucket) --no free versions
      • Rally ( Support Scrum and Kanban) from Broadcom ( has a free limiite use edition ) ---competitor Jira
        • github&Rally itegration with Jenkins plugin to connect the 2
      • Difference between Jira, Trello & ZenHub
      • Code Climate.[metrics like cycle time and visualizations of pulls etc from version control]





    • Communicating: Chat / Messaging -
      • Discord: and how to setup and use
        • GitHub and Discord integration (via webhook)
      • Slack and example slack workspace other options
        • GitHub and Slack integration

     

Exercise:

  • Ex: (not turned in) Setup for Project 2 your Group Git, GitHub repository, GitHub Project setup (use template with issues board), JUniit and Slack/Discord.
Week 7
14 Patterns and Frameworks
Class Lecture,  Clean Code - Chapter 8(using 3rd party code) , OOP- Chaper 8,10
    • Patterns
      • Examples
    • Patterns versus Frameworks - Definitions
    • Ideas around Designing Your Own Framework
15 Build & Release Management
Class Lecture,  Reading (from safari index at library.csueastbay.edu: " Site Reliability Engineering By Betsy Beyer, Chris Jones, Niall Richard Murphy and Jennifer Petoff -- chapter 8 "Release Engineering" (@ Google)
    • Buid & Relase Management YOUTube Video
    • Case Studies:
      • Microsoft Developent Pipelines: from code commit to shipping and more
      • OpenSource from research to deployment

    • Travis Ci - automated tested upon GitHub deployment
      • android and Travic CI
      • simple hello world with IntelliJ and TravisCi with Github: Github Repository w/ .travis.yml file



    • GitHub Actions - Overview Video (ignore cloud landscape talked about in first minute) - can trigger (say based on github push) to automate build, deploy to cloud, etc.
      • read artcile 1 and article 2 and example deploy to Google App Engineand xample to Deploy to Google Firebase
        • GitHub's example repository with actions
        • Comparison of Trvis Ci and GitHub actions
      • Video showing auto deployment to docker

     

     

    • SOME Popular Build Tools (in historical order): Ant, Maven, Gradle, Bazel, Screwdriver
    • VIDEO: Maven- a protocol & tools
    • VIDEO - Gradle
    • VIDEO - Bazel << Some build tools support parrallel compilation to reduce time Bazel is an example
    • VIDEO - Screwdriver

     

     

    • IntelliJ and Build Tools:
      • Maven
      • Ant
      • Gradle
      • Plugin --bazel integration in IntelliJ (google sponsored???)

Exercise:

  • Exercise 8: Group Exercise - (not graded) due March 7 start of class, For your group Project 2 setup install Git on each group members machine, GitHub accounts ,GitHub Project for the group Repository (use template w/ Issues Board), Travis Ci(only if doing extra credit w Travis), Discord OR Slack, Android Studio, AND SHOW as issues the work you did on the Exercise GUI and Eventhandling as on your groups Closed list on its Scrum Board.
      • Remember your GitHub wiki should have a page "Design Document" that has a link to the Design Document you previously created
Week 8

17 Data Layer
Class Lecture,

    • Data Solutions- Lecture, as a YouTube, as mp4

    • SQL - Lecture, as a YouTube, as mp4
      • SQL - Basics (651 site)

    • Google Firebase - MAIN lecture (with narration) -- you must pause and go to slide to play embedded google videos
      • Create Google Firebase Project and Firestore
      • Google Firebase (mobile as a backend --for data storage and access) And read about Google Firestore (the database service that is part of Firebase)
      • Google Firebase Console
      • Database solutions: Comparison: Firestore versus Realtime database
        • Option1:Firestore intro/what is it Video AND Firestore with Android
        • Option 2 - realtime database intro
      • Firebase Authentication intro video AND get started with Authentication
    • See Below for Android and Internal SQLite Database AND Firebase for Android
Week 9-12

19 A framework in Practice -> ANDROID

 

Objective: Learning a Modern Framework, Working on a different platform (mobile, with possible use of sensors), Learning a Framework that employs patterns and software lifecycle

 

Reading:

  • : chapter 1&2 of Android book
  • MATERIALS COVERED from Mobile Programming WEBSITE. (you must attend class!!!)

    We will cover Modules 3,4,5,8, 9 of Mobile Programming AND any additional items like Database. More modules will be covered only as time alows. This means that some of you will be doing some reading on your own depending on what you propose to do in your app. NOTE: module 8 may be done on your own, if time in class we will cover together


  • Android Developer Fundamentals
  • Android Developer Website

  • Android Studio:
    • Android Studio - Download

      Android Studio - User Guide

      Android Studio +Git + GitHub AND Android Studio and .gitignore

  • Layout - Use templates when possible. READ - posting comparing RelativeLayout versus ConstraintLayout AND another discussion of RelativeLayout versus ConstraintLayout

  • JUnit testing in AndroidStudio (careful to select Java not Kotlin as language) And AndroidStudio Generate->Test tool demonstrated (works same for Java)
    • DO JUnit 4 testing (not 5) --- EXAMPLE

  • Android SQLlite Database: as Video

  • Android + Firebase's Firestore
    • Register Android App w Firestore and Setting up App Code (Sample Code) AND GitHub Reposistory of Sample Code

    • Official Developer site reading:
      • Get started with Android JAVA and Firebase -- MUST syouelect Android JAVA when shown the code examples (there are multiple options)
      • Making Queries with conditionals
      • READ Setup Firebase for a Mobile App, READ to learn about FireStore in general
      • Firestore + Android Get Started (Java -make sure you choose that language)
      • IMPORTANT: FIrebase API for Android
  • OPTIONAL: Interface testing in Android
  • OPTIONAL READING- you can mix Kotlin and Java in an Android codebase (we are doing purely Java Android projects in this class)
  • OPTONAL Android's "navigator" . AND video explaining the idea--- simplified visual setup of navigation, handles uniformily backstack etc.

Exercises:

  • Exercise 10. AND - Go Over Android - basics, getting started
  • Exercise 11: Choose Option 1 or 2    OPTION1-Get started(Android+Java option) OR OPTION 2:: Android + Firebase Codelab (due April 4 start of class)
Week 8
Midterm --placeholder may move
Week 13 *assynchronous, optional

16 Cloud Overview & Docker

    • READ: https://cloud.google.com/solutions/mobile/mobile-firebase-app-engine-flexible
    • High Level Cloud Intro

 

Advanced (optional to read)

    • container-based deployment : About Docker and Containers
    • 3rd party custom deployment (or going to Google Cloud Iaas): e.g. Docker and Docker and managed VMs on Google w/ running GCE apps on these managed VMs

     

    • STEP 1: Setting up Docker windows, mac, linux This will teach you:
        • install Docker software using the Docker Toolbox
        • use Docker Engine to run a software image in a container
        • browse for an image on Docker Hub
        • create your own image and run it in a container
        • create a Docker Hub account and an image repository
        • create an image of your own
        • push your image to Docker Hub for others to use
    • STEP 2: Quickstart guide
22 Java: Internet Communications
Class Lecture, 
    • Basic Network Communications

23 Java: Lambda Expressions & Video Stream Lectures
Class Lecture, Java - Chapter 17

  • Lambda Expressions taking Java into funcitonal programming (anonymous functions)

  • Various Video Streams (optional, on your own)
Week 14-15
Project Work / Presentations/ Review

cs401:sw engieering

  • home
  • outline
  • projects
  • syllabus
  • links