• ISAT 252 Spring 2020 Plan for the Rest of the Semester

    Given that we'll all need to complete the rest of the semester remotely, here's some of the basic guidelines I'd like us all to follow.

  • How To Start A New Project

    The requirements and steps for creating a new programming project.

  • Side Effects

    Introduction to the concept of "side effects" in computer programming. Example code in a variety of languages is provided to demonstrate the main types and their impacts on TDD and testability in general.

  • The “Offline First” Approach to Cross-Platform App Development

    Modern app development is dominated by the assumption that our apps enjoy a stable, continuous, strong, and ubiquitous connection to the internet. Sadly, we know from our daily lived experience that this is NOT the case. We’re not always near a Wi-Fi hot spot, and even a physical, wired connection to our cable modem doesn’t guarantee 100% uptime. “Offline First” (http://offlinefirst.org) is a relatively new approach to the analysis, design, and implementation of apps. It begins with the assumption that internet connectivity is, at best, flaky and unreliable, and then proceeds to develop user experiences (UX) that are robust–allowing people to use your apps effectively regardless of whether or not they currently happen to have a solid connection to the network. While the tech demos in this talk will feature PWA’s (progressive web apps) built with VueJS, this philosophy can be applied to app development in any scenario: web or native, mobile or desktop. Anyone who is involved in the analysis, design, or implementation of any kind of modern app will benefit from the principles to be explored in this talk. It really boils down to the question: How can we build apps that allow our users to have fantastic, productive experiences, even if they may lose internet connectivity from time to time?

  • deck

  • deck

  • Demystifying Blockchain: Business Applications with Hyperledger Fabric

    While the permissionless blockchain technologies that support software like Bitcoin and Ethereum dominate headlines, there are still very significant unsolved technological challenges that prevent these platforms from becoming truly mainstream. Meanwhile, big companies like IBM, Intel, Cisco, and American Express are putting their energy behind a less ambitious, less risky, but no less impactful form of blockchain platform--the permissioned blockchain. The dominant player in the permissioned blockchain space is Hyperledger (www.hyperledger.org), a massive, open-source family of blockchain frameworks being managed by the Linux Foundation. In this session, we will briefly cover the key differences between permissioned and permissionless blockchains, and demonstrate why wise developers looking to break into the blockchain space should invest their time and energy learning to develop solutions with Hyperledger. We'll dive right into a demonstration of what blockchain development looks like with Hyperledger Fabric, one of the five frameworks currently being incubated by the Hyperledger project.

  • Custom Courseware

    These slides describe why I don't use commercial learning management systems, and the goals of the custom tools that I build myself.

  • BSISAT Assessment & ABET

    These slides were created for the 3/28/18 BSISAT Faculty meeting and designed to help solicit the help of the entire faculty on the creation and collection of a comprehensive data gathering system.

  • Bitcoin, Cryptocurrency, Blockchain: What is it? Why Should I Care?

    This is a short, high-level introduction to the major terms and concepts related to blockchain technology that focuses on the kinds of problems it may be able to solve.

  • Public Key Cryptography

    Introduction to the basic concepts associated with public key cryptography. This presentation is targeted at people who may have no background in math or computing, but are able to follow a mathematical argument.

  • deck

  • APC Calendar Study Feedback

  • The ISAT 252 Spring Break Challenge

    This is a programming challenge problem for students in my intro programming class.

  • Test-Driven Development

    Introduction to the test-driven development (TDD) in computer programming. Example code in a variety of languages is provided to demonstrate TDD.

  • Dependency Management

    Introduction to the concept of dependency management in computer programming. Example code in a variety of languages is provided to demonstrate dependency management in a variety of programming languages.

  • Flow Control

    Introduction to the concept of flow control in computer programming. Example code in a variety of languages is provided to demonstrate the major types of flow control: if/then statements, switch, for loops, foreach loops, and while loops.

  • JMU Academic Calendar Planning

    This is a report to the JMU Faculty Senate on the current status of efforts to update the JMU Academic Calendar.

  • Operators

    Introduction to the concept of operators in computer programming. Example code in a variety of languages is provided to demonstrate the major operator categories: arithmetic, comparison, logical, and assignment.

  • Symbols & Data Types

    Introduction to the concept of symbols in modern programming languages, more commonly referred to as variables and constants. There is also an introduction to the concept of data types. Both concepts will be illustrated with code samples in various languages.

  • Collections

    A brief introduction to the concept of "collections" in computer programming. Covers basic terminology and contains example code for common properties and operations in several different languages.

  • Decisions