703.608.0975 rick@warrenworks.com

marrymount-logo-half

College of Business, Innovation, Leadership, and Technology (BILT)
School of Technology & Innovation

IT-566-A Computer Scripting Techniques

Computer Scripting Techniques

Fall 2024

COURSE SYLLABUS

Course Type:

Classroom

Course Catalog Description:

This course covers writing scripts using current industry scripting languages to solve common IT problems. It covers the basics of scripting, syntax, and data representations, examining different ways to use system administration, natural language processing, and Web programming. Students will apply scripting skills to problem solve relevant tasks in various IT specialties, learning how to write algorithms and regular expressions to extract relevant information from data sets and how to use third-party packages for more complicated tasks. Students must achieve a minimum grade of B-. 

Broad Purpose of Course:

The primary purpose of this course is to enable students to build competency in automating repetitive tasks using python and bash scripts. Additionally, students will learn a practical git-based application development workflow they can apply in the real world. A Git-based workflow includes the use of the distributed version control system Git to create and maintain source code repositories along with GitHub to store, manage, share, and collaborate on remote repositories. Students will learn and apply GitOps and DevOps techniques to build, run, test, and deploy application scripts.

Instructor:

Rick Miller, MS Computer Science
California State University Long Beach
Phone: (703) 608-0975
email: richmill@marymount.edu
website: warrenworks.com

Class Hours:

Class Meets In Person

Location Dates & Time
Ballston Center, Room 4088 Monday — 6:45pm – 9:30pm

 

Required Text:

None — But  some material will come from my forthcoming book Computer Scripting Techniques with  Python along with online resources Chapter 1 | Chapter 2  | Chapter 3Chapter 4|
Chapter 5Chapter 6Chapter 7Chapter 8|
Chapter 9 | Chapter 10 | Chapter 11 | Chapter 12|
Chapter 13| Chapter 14 | Chapter 15  | Chapter 16 |
Chapter 17 |
 

 

 

Office Hours:

  • During on-campus meeting dates either before, during, or after class
  • Via phone or Zoom anytime by appointment

Important Dates To Remember:

Event Date
First Day of This Class 26 August 2024
Labor Day (No Class) 2 September 2024
Midterm 14 October 2024
Veterans Day (No Class) 11 November 2024
All Projects Due 9 December 2024
Last Day of This Class 9 December 2024

Complete Fall 2024 Academic Calendar

Course Objectives:

Upon successful completion of this course students will be expected to:

  • Automate mundane, repetitive, computer administrative and computational tasks using Python and Bash
  • Configure personal development environment for Python and Bash script development using industry best practices
  • Perform source code configuration management using Git and GitHub
  • Apply Git-based workflow to script application development
  • Adapt and employ pre-existing Python scripts
  • Adapt and employ pre-existing Bash scripts
  • Develop Python scripts from scratch
  • Develop Bash scripts from scratch
  • Segregate Python development and execution environments using PipEnv
  • Perform common repository actions using Git to include create, clone, checkout, add, commit, push
  • Create and handle repository pull requests
  • Conduct and participate in code reviews
  • Identify and use third-party Python libraries to speed application development
  • Develop competency in Python syntax and semantics
  • Write Python code that conforms to the PEP-0008 Style Guide
  • Verify Python code functions properly by writing and running unit tests
  • Develop competency in commonly used Python data structures to include list, dictionary, class, tuple, set, stack, queue
  • Write Bash scripts that conforms to industry best practice
  • Employ Regular Expressions to search and filter text

Major Topics

Python
Python 3.10.x Programming
Python Project Organization
Python Syntax
Python Semantics
Python Data Structures
Object-Oriented Python
Unit Testing

 

 

 

 

 

 

 

 

Python Virtual Environments
PipEnv

Source Code Configuration Management
Purpose and Use of Repositories
Git
GitHub
Git for Windows (with Git Bash)

Bash
Bash Shell Programming
Bash Syntax
Bash Semantics
Bash Data Structures
Bash Command-Line Argument Processing

 

Regular Expressions
Regular Expressions: The Complete Tutorial
Regex101.com

 

 

 

Grading:

Your grade is based on your performance on assigned projects, exams, class engagement, and class attendance record.

Assignment Grade Percentage
Projects 60%
Midterm 20%
Engagement 20%
Attendance (Missed Classes)
3 (2 summer) Drop one letter grade
6 (4 summer) Drop two letter grades
8+ (5+ summer) Fail

Note: Class attendance is applied to your course performance. Example: If you’re traking a ‘C’, missing 3 classes will drop that to an ‘F’. There is no ‘C’ in a graduate course.

Caution to International Students — Think long and hard before traveling outside the US during the semester as you may encounter delays with travel visa processing when trying to return.

Extra Credit Policy: In the words of one of my stern California State Long Beach professors: “What makes you think you can do extra credit when you can’t do regular credit?” — You need to hit the deck running on the first day of class and keep up with the reading and assignments. Programming requires time so plan your course load accordingly. I do not offer extra credit.

Academic Integrity: Turn in your own work. I’d rather you struggle with your own code than copy wholesale someone else’s code and pass it off as your own. You will watch a ton of YouTube videos and see lots of code examples online. That’s OK. It’s a great way to learn. You may copy a line or two of code from StackOverflow.com. That’s OK, too. Professional programmers do the same thing. Give credit where credit is due. The number one sign of cheating is turning in an assignment that looks like another student’s assignment and you can’t fully explain how it works or what the code is doing or why you chose a particular approach to solve a problem.

Unauthorized Uses of Artificial Intelligence: Marymount University acknowledges that ChatGPT and other generative artificial intelligence (AI), text generated tools have the capability of dramatically altering the academic environment in both positive and negative ways. The purpose of this section of Marymount’s Academic Integrity Code is to identify both permitted and prohibited intentional uses of AI-generated text tools to support the University’s academic integrity policies in the most productive way possible.

Permitted Uses: 

Educational activities conducted with the advanced written approval of a faculty instructor, in such a way as to facilitate increased knowledge and understanding about the use of AI in business, government, and educational settings.

When permitted, in advance and in writing, by faculty or staff in the conduct of an educational activity as a teaching or learning tool (e.g., tutoring, academic advising, etc.).

As a research tool to assist and enable computer-based internet search activities (e.g., library, database, thesauruses, Grammarly, etc.). Use of AI tools must be formally provided through written approval of the instructor.

Prohibited Uses:

For the development and/or submission of drafts or final versions of any paper, report, or other work research papers submitted in lieu of original student work without instructor permission. This definition includes but is not limited to doctoral dissertations, masters’ theses, and undergraduate written assignments, whether in full or in part. It also includes both graded and ungraded academic work. The improper usage of generative artificial intelligence tools falls within the university’s standard definition for plagiarism: Representing the works of another as one’s own.

Class Schedule: (Note: Material Compressed Into 10-Weeks During Summer Sessions)

Week Topics Covered Notes
1
  • Class Introduction
  • Peer Introductions and Backgrounds
  • Skills Assessment
  • Introduction to Computer Scripting
  • Scripting vs. Application Development
  • Scripting Languages vs. Programming Languages
  • Development Environment Setup and Configuration
  • Integrated Development Environments vs. Text Editors
  • Why Python?
  • Why Bash
  • Because I Know You’ll Ask…
    • What About Windows Batch Files?
    • What About PowerShell?
  • Source Code Configuration Management
    • Git & GitHub

Course Examples Repository:
https://github.com/pulpfreepress/it-566-computer-scripting

 

 

 

 

 

 

 

———————————-

Python PEP 8 Style Guide

regex101.com 

python.org

Git

GitHub

Git for Windows

Visual Studio Code

Bash Programming Guide

Bash Programming Book

Note: Topics scheduled but not covered during a class session will carry over to the next class session.

2

 

  • Install and configure Python
  • Configure Development Environment
  • Create and Execute Simple Python Script
  • Create and Execute Simple Bash Script
  • Study Python Fundamentals
  • Study Bash Fundamentals
  • Develop Fluency with Linux/Unix Terminal

 

 

 

 

 

 

 

——————————
Interesting Links

GitHub’s The ReadMe Project

Stack Overflow

KD Nuggets

——————————
Tools

Tox
https://tox.wiki/en/latest/

pre-commit
https://pre-commit.com

pytest
https://docs.pytest.org/en/7.1.x/

—————————————
Linux Command Handbook
https://bjpcjp.github.io/pdfs/devops/linux-commands-handbook.pdf

https://www.freecodecamp.org/news/the-linux-commands-handbook/

 

 

Week 2 Talking Points

Assignment: Project 1

Be prepared to hit the deck running next Monday!

3

Software Design Topics:

  • Problem Decomposition

Python Topics:

  • File Structure
  • Project Structure
    • Namespaces
    • Modules
  • Functions
  • Variables
  • Selection Statements
  • Looping Statements
  • Lists
  • List processing
  • Processing Command Line Arguments

Bash Topics:

  • Bash File Structure
  • Selection Statements
  • Looping Statements
  • Processing Command-Line Arguments

Git and GitHub:

  • Git Workflow
  • Working with SSH
  • Configuring GitHub
  • Creating Repositories
  • Submitting Pull Requests

Configure SSH for GitHub

SPHINX Python Documentation Generator

pydocstyle

Week 3 Talking Points

 

4

Python Topics:

  • Classes
    • Declaring and Using Classes
    • Constructors
    • Methods
  • Unit Testing
  • File Processing
  • Dictionaries
  • Sets
  • Tuples
  • Exceptions
  • Special Methods
    • String Representation with __repr__ and __str__
5

Python Topics:

  • List Comprehensions
  • Generator Expressions
  • More Special Methods

 

Assignment: Project 2

6 Bash Scripting Demo Project 1
7 Bash Scripting In-Class Programming Assessment Sample Project
8 Midterm Exam — In-Class Programming Assessment
9

Software Architecture:

  • Client-Server Applications

Interapplication Data Sharing:

  • JavaScript Object Notation (JSON)
    Demo Project 2
    10

    Software Architecture:

    • Client-Server Applications

    Interapplication Data Sharing:

    • JavaScript Object Notation (JSON)

    Python Topics:

    • Client-Server Programming
      • Role of Server
      • Role of Client
    • Threading
      • Single-Threaded Programs
      • Multi-Threaded Programs

     json.org

     

    11

    Software Architecture:

    • Client-Server Applications

    Interapplication Data Sharing:

    • JavaScript Object Notation (JSON)
    12

    Software Architecture:

    • Client-Server Applications

    Interapplication Data Sharing:

    • JavaScript Object Notation (JSON)
    13

    Python Topics:

    • Client-Server Programming
      • Role of Server
      • Role of Client
    • Threading
      • Single-Threaded Programs
      • Multi-Threaded Programs
    14

    Python Topics:

    • Client-Server Programming
      • Role of Server
      • Role of Client
    • Threading
      • Single-Threaded Programs
      • Multi-Threaded Programs

    15

     

     

     

     

     

    Individual Help with Projects Demo Projects

    16

     

     

     

     

     

    All Projects Due All Projects Due