Date Submitted: Tue, 16 Aug 2016 17:03:43 GMT

Viewing: CSC 519 : DevOps: Modern Software Engineering Practices

Last approved: Thu, 02 Jun 2016 14:12:36 GMT

Last edit: Thu, 02 Jun 2016 14:12:32 GMT

Changes proposed by: cjparnin
Catalog Pages referencing this course
Change Type
Major
CSC (Computer Science)
519
032333
Dual-Level Course
No
Cross-listed Course
No
DevOps: Modern Software Engineering Practices
DevOps
College of Engineering
Computer Science (14CSC)
Term Offering
Fall and Spring
Offered Every Year
Fall 2016
Previously taught as Special Topics?
Yes
2
 
Course Prefix/NumberSemester/Term OfferedEnrollment
CSC 591Fall 201559
CSC 591Spring 201540
Course Delivery
Face-to-Face (On Campus)

Grading Method
Graded/Audit
3
16
Contact Hours
(Per Week)
Component TypeContact Hours
Lecture3
Course Attribute(s)


If your course includes any of the following competencies, check all that apply.
University Competencies

Course Is Repeatable for Credit
No
 
 
Christopher Parnin
Assistant Professor
Assoc

Open when course_delivery = campus OR course_delivery = blended OR course_delivery = flip
Enrollment ComponentPer SemesterPer SectionMultiple Sections?Comments
Lecture6060NoPrevious offers of course saw enrollments of 40 students and 60 students on the second offering the next semester.
Open when course_delivery = distance OR course_delivery = online OR course_delivery = remote
Prerequisite: CSC 510 or (graduate or senior standing with at least a 3.0 GPA) and good knowledge of at least one high level programming language
Is the course required or an elective for a Curriculum?
No
Modern software development organizations require entire teams of DevOps to automate and maintain software engineering processes and infrastructure vital to the organization. In this course, you will gain practical exposure to the skills, tools, and knowledge needed in automating software engineering processes and infrastructure. Students will have the chance to build new or extend existing software engineering tools and design a DevOps pipeline.

The elapsed time for a change made by a developer to reach a customer can now be measured in days or even hours, causing many fundamental changes to software development models.  Continuous deployment is a software engineering process where incremental software changes are automatically tested, and frequently deployed to production environments. Continuous deployment was born out of a need to reduce the overhead and increase the speed of deployment and decrease the technical challenge of replicating the production environment for the purposes of testing.  




With continuous deployment, often feature changes undergo a staged deployment from internal servers to a small number of external servers to general availability based upon the results of “live experiment” testing by customers. Continuous deployment is applicable to a range of product delivery mechanisms, such as web deployment, applications that run on the cloud, mobile applications, and automatic product updates. These fundamental changes create a new reality in software development.


No

Is this a GEP Course?
GEP Categories

Humanities Open when gep_category = HUM
Each course in the Humanities category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

Mathematical Sciences Open when gep_category = MATH
Each course in the Mathematial Sciences category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

Natural Sciences Open when gep_category = NATSCI
Each course in the Natural Sciences category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

Social Sciences Open when gep_category = SOCSCI
Each course in the Social Sciences category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

Interdisciplinary Perspectives Open when gep_category = INTERDISC
Each course in the Interdisciplinary Perspectives category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

Visual & Performing Arts Open when gep_category = VPA
Each course in the Visual and Performing Arts category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

Health and Exercise Studies Open when gep_category = HES
Each course in the Health and Exercise Studies category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
&
 

 
 

 
 

 
 

Global Knowledge Open when gep_category = GLOBAL
Each course in the Global Knowledge category of the General Education Program will provide instruction and guidance that help students to achieve objective #1 plus at least one of objectives 2, 3, and 4:
 
 

 
 

 
Please complete at least 1 of the following student objectives.
 

 
 

 
 

 
 

 
 

 
 

US Diversity Open when gep_category = USDIV
Each course in the US Diversity category of the General Education Program will provide instruction and guidance that help students to achieve at least 2 of the following objectives:
Please complete at least 2 of the following student objectives.
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

Requisites and Scheduling
 
a. If seats are restricted, describe the restrictions being applied.
 

 
b. Is this restriction listed in the course catalog description for the course?
 

 
List all course pre-requisites, co-requisites, and restrictive statements (ex: Jr standing; Chemistry majors only). If none, state none.
 

 
List any discipline specific background or skills that a student is expected to have prior to taking this course. If none, state none. (ex: ability to analyze historical text; prepare a lesson plan)
 

Additional Information
Complete the following 3 questions or attach a syllabus that includes this information. If a 400-level or dual level course, a syllabus is required.
 
Title and author of any required text or publications.
 

 
Major topics to be covered and required readings including laboratory and studio topics.
 

 
List any required field trips, out of class activities, and/or guest speakers.
 

The current special topics instructor will continue teaching the course. No extra resources are needed.

Students are expected to gain practical exposure to tools, processes, and principles of software engineering through hands-on projects while understanding models and research ideas behind the tools and processes. Lectures will include workshop style learning experiences, where students get to work on a problemset and receive feedback from the instructor and other classmates. When possible, guest lectures from industry will help illustrate examples of how the technology is deployed in practice.


Student Learning Outcomes

Construct and provision images programmatically.


Devise configuration management for production environments.


Construct and maintain build environments automatically.


Assess test suites and measure testing quality and coverage.


Produce automatically generated tests, using feedback-directed random testing, fuzzing, and data-flow analysis.


Estimate code quality via static and dynamic code analysis.


Identify components of infrastructure.


Apply feature flags to remotely regulate behavior of deployed software via  and configuration servers.


Contrast and compare different advanced strategies for deployment of software.


Design monitoring and analysis of telemetry data.


Devise resilience testing for production environments (e.g., Chaos Monkey).




  •  


Evaluation MethodWeighting/Points for EachDetails
Final Exam20Comprehensive exam.
Homework25Homework assignments will be regularly released throughout the semester and reinforce class material. Homework will typically mirror a scenario or common task that a DevOps engineer may face.
Attendance5Workshops have required attendance and are vital to the course. During a workshop, you'll be guided in using tools and building specific functionality which you will later use for homeworks and project milestones.
Project40The primary objective of the course will be to allow students to gain experience in incrementally building a continous delivery pipeline from scratch. Throughout the semester, students are expected to complete a component of the pipeline by each milestone deadline.

Students are able to choose their own app and technology choices for building a deployment pipeline. Otherwise, a default app and technology stack will be provided.

Milestones

Details on requirements for milestones will be released throughout the course. A student's pipeline should demonstrate the following components by the milestone deadline:

BUILD
TEST+ANALYSIS
DEPLOY
SPECIAL
Oral Presentation10Students in CSC 591 will organize in groups and present one tech talk during lecture. For a tech talk, students are expected to cover one tool or technology revelant to DevOps in a 15-20 minute presentation. Students should perform a small demo to help illustrate the tool. Three days during the semester will be reserved for these presentations.
TopicTime Devoted to Each TopicActivity
Continuous Deployment1 weekStudents learn about core concepts related to continuous deployment and devops.

Workshop on git, branches, provisioning servers, hooks.
Configuration Management1 weekStudents learn about package managers, configuration management tools, and virtualization.

Workshop on automatically configuring a webserver using configuration management tools.
Build Management1 weekStudents learn about build servers, build teams, pipelines, and containers.

Workshop on a simple build server using a containers.
Static Analysis1 weekStudents learn about parsing source code, source complexity analysis, static checking tools.

Workshop on computing simple complexity metrics of source code.
Test Management2 weeksStudents learn about automatic test case generation, test prioritization, mutation and generation based fuzzing, random testing, and branch and statement coverage.

Workshop on test case generation using feedback directed random testing.

Workshop on fuzz testing.
Infrastructure Management1 weekStudents learn about concepts related to application infrastructure: load balancers, routing, regions and availability zones.
Feature Flags/Property Sets1 weekStudents learn about runtime configuration, user experimentation, dark launches, and feature flags.

Workshop on implementing queues, caches, and simple load balancer.
Staging + Deployment1 weekStudents learn about deployment strategies, staging, data migration strategies, and canary analysis.

Workshop on blue/green deployment.
Advanced Container Management1 weekStudents learn about orchestration and managing multiple containers.

Workshop on ambassador pattern and docker-based deployment.
Analysis and Monitoring1 weekStudents learn about monitoring server health, collecting metrics, resilience testing, and event analysis (e.g. flame graphs).

Workshop on implementing simple server health and chaos monkeys.
Technology Talks 2 Weeksstudents will learn how to Contrast and compare different advanced strategies for deployment of software.
Demonstrations 1 Weekhands-on projects while understanding models and research ideas behind the tools and processes
Guest Lecture 1 Weekstudents will learn from industry of how the technology is deployed in practice.
mlnosbis 3/8/2016: No overlapping courses. All new course proposals need consultation. Send for consultation to DGP of Geospatial Information Science and Technology, Dr. Eric Money (esmoney@ncsu.edu).

ghodge 3/15/2016 Update syllabus to include grade scale and:
Students are responsible for reviewing the NC State University PRR’s which pertains to their course rights and responsibilities:
Equal Opportunity and Non-Discrimination Policy Statement https://policies.ncsu.edu/policy/pol-04-25-05 This link will open in a new window with additional references at https://oied.ncsu.edu/equity/policies/ This link will open in a new window
Code of Student Conduct https://policies.ncsu.edu/policy/pol-11-35-01 This link will open in a new window
Grades and Grade Point Average https://policies.ncsu.edu/regulation/reg-02-50-03 This link will open in a new window
Credit-Only Courses https://policies.ncsu.edu/regulation/reg-02-20-15 This link will open in a new window
Audits https://policies.ncsu.edu/regulation/reg-02-20-04

ABGS Reviewer Comments:
-Resource statement says "The instructor will teach this course regularly, roughly once per year”, but the course will be offered Fall and Spring? Updated resource statement.
-Syllabus still does not appear compliant with Graduate School requirements. Response: syllabus is ok.
-There is space for the abbreviated title to be more descriptive.
-Approve
reeves (Thu, 18 Feb 2016 20:13:30 GMT): The number of weeks of material only adds up to 11. Please fill out the schedule - 2 weeks for demos/presentations? One week off? Something else? Otherwise course and outcomes look good.
reeves (Thu, 18 Feb 2016 20:30:33 GMT): Rollback: Robyn, please contact Chris and just ask him how to fill in 3 or 4 more weeks of work on the schedule shown.
Key: 8573