Welcome to my home at the University of Chicago

I lead the customer team for Globus and teach in the Masters Program in Computer Science. I'm also an advisor to early stage software companies in the areas of go-to-market strategy, product management, and marketing.

Engage!
Gary Larson cartoon

Cloud Computing (MPCS 51083)

Changes to class structure due to the pandemic (as of April 2021)

While we are under pandemic teaching restrictions this class will be conducted remotely. Lectures will be a mix of pre-recorded videos and synchronous (live) presentations via Zoom. You will be expected to watch videos in order to benefit from the live class discussion. Other than live lectures, class hours will include demonstrations and exercises where you can follow along on your own computer or work in groups. In some weeks all content will be delivered syncrhonously to give you the opportunity to actively participate. Although all live lectures and class discussion will be recorded and available for later viewing, I encourage you to attend class and ask questions, as you would in a non-pandemic world.

Important note for offshore students: Homework assignments and in-class exercises will require a reliable Internet connection with access to various Amazon Web Services resources in the U.S., so any restrictions on network traffic to AWS or unreliable network connections may severely limit your ability to participate in this class.


Cloud computing is being widely adopted by enterprises of all sizes due to the low initial investment required, attractive operating costs, and elastic capacity that can best serve the highly variable demands of modern applications. Software engineers must be familiar with cloud computing technologies since many new applications they develop will be deployed “in the cloud”, and existing applications will often require integration with cloud-hosted services to take advantage of new capabilities.

This course provides an introduction to cloud computing with specific consideration for application development in two contexts: highly scalable (or so-called “web-scale”) web applications, and enterprise applications in a hybrid environment comprising both on-premises and cloud infrastructure. We will focus primarily on infrastructure and platform services, and will introduce software-as-a-service from the perspective of a consuming application. The course will emphasize practical applications of cloud computing technologies, with sufficient exploration of their theoretical underpinnings to inform architectural, design, and implementation decisions. We will use commercial cloud offerings provided by Amazon Web Services to build and deploy "real” cloud-hosted applications.

Select topics covered in this class

  • » A (very) brief history of distributed computing and clouds
  • » Cloud computing service models and economics
  • » Virtualization and Infrastructure-as-a-Service
  • » Application concurrency and data consistency models
  • » Cloud storage systems: Characteristics and tradeoffs
  • » Identity and access control in cloud computing systems
  • » Inter-service communication: Messaging and notifications
  • » Cloud security, privacy, and policy compliance
  • » Cloud services and mobile applications
  • » Serverless computing, microservices, and containerization
  • » Automated deployment and operations techniques
  • » Fault-tolerance and disaster recovery strategies

Coursework

During the first six weeks of the course, a series of short programming assignments will be due each week. During the last four weeks we will work towards a capstone project that brings together many of the concepts and technologies covered in the course. Some of the earlier programming assignments will provide components to be used in our capstone project so it is important to stay current on coursework, otherwise you may find completion of the capstone project very challenging.

Grading

The grade for this course will be heavily weighted towards the capstone project. There will also be two short quizzes covering material that you should be familiar with if you have attended class and completed the programming assignments.

Reference material

There is no formal textbook for this course. We will refer to a variety of online resources, including selected readings on cloud concepts, programming guides for Amazon Web Services, and references for various technologies used in programming assignments.

Prerequisites

This course assumes no prior knowledge of cloud computing. Programming assignments require familiarity with Python and use of Linux commands, as well as simple shell scripts. We will use the boto SDK for Python to access Amazon Web Services, and some assignments, including the capstone project, will make use of Flask, a Python-based micro-framework for web applications. A brief overview of boto, the web framework, as well as a list of reference materials will be provided; additional concepts will be introduced as they are needed to complete assignments. Knowledge of web application development is not required, but students with little or no understanding of web methods may find some assignments particularly challenging. Ideally, students should understand the fundamentals of web APIs in general, and the REST approach in particular. An understanding of database concepts, such as referential integrity and ACID properties, is also useful.

Are you ready for MPCS 51083?

Students in past years have struggled to keep up with homework assignments due to limited experience with Python and knowledge of the Linux command line. If you're planning to sign up for this class take a few minutes to review the following; if you have doubts about your proficiency in these areas please talk with me before registering.

Python Proficiency

Consider the code snippets below. I expect that you can determine the result within a few seconds, without consulting any external source.

# Sample 1
a_list = [[5, 2], [9, 4], [3, 3]]
a_new_list = sorted(a_list, key=lambda x: x[1])
print(f"The new list is {a_new_list}")

# Sample 2
if 'object_id' in request:
  response['fname'] = request['object_id'][:request['object_id'].index("~")][-36:]
else:
  response['fname'] = 12 * '0x0'

# Sample 3:
import os, json
content = json.loads(request.body)
working_dir = content['fpath']
file_name = content['fname']
if not os.path.exists(working_dir + file_name):
  os.makedirs(working_dir + file_name)

Command Line Proficiency

You should be comfortable writing commands and scripts like the samples shown below.

# Sample 1:
aws ec2 describe-instances --output text | grep RESERVATIONS | awk '{print $3}'> sec_groups

# Sample 2:
export MPCS_LOGS_ROOT=./log/
export MPCS_LOG_FILE=mpcs.log
[[ -d ./log ]] || mkdir $MPCS_LOGS_ROOT
if [ ! -e $MPCS_LOGS_ROOT/$MPCS_LOG_FILE ]; then
  touch $MPCS_LOGS_ROOT/$MPCS_LOG_FILE;
fi


If you understand the commands covered in the MPCS Unix Bootcamp, you should be OK. In addition, William Shotts's The Linux Command Line is a very approachable tutorial/reference for those new to the command line.

Web Programming Proficiency

While this is not a web development course, our programming assignments are all related to building and interacting with web services via APIs. At minimum, you should be familiar with:

  • HTTP request-response mechanisms, including request headers and response codes
  • HTTP verbs and their appropriate use (e.g. using GET vs. POST)
  • The REST (REpresentational State Transfer) architectural style and approach—check out this nice summary if you're a little rusty
  • Simple HTML forms (input field and tables) and basic CSS
  • Working with JSON, and especially Python's json library

The Real Python guide to requests has a good introduction with simple examples that you can test using Postman, a very versatile API development tool.

Product Management (MPCS 51240)

Product management is a cross-disciplinary endeavor that sits at the intrersection of software engineering, marketing, and the user experience. Product managers are expected to create products in support of business objectives, ensuring that products deliver value to customers and are feasible to build within varying sets of constraints. In this course we will introduce the role of the product manager and demonstrate the challenges faced by product managers. We will explore approaches for managing the tension that exists between software development and product delivery, using the minimum viable product and the product roadmap as critical tools.

Key themes for this class

What does it take?

Understanding the elements of "good" product management—and identifying a lack thereof.

How do you do it?

Getting to product market fit quickly; aka "Perfection is the enemy of progress".

Why isn't it working?

Understanding the value of iteration and failing fast; aka "You don’t know what customers value".

What's a good product?

Delivering a product that meets customer needs; aka "Customers don’t know what they need".

Why is it so hard?

Aligning product focus and business needs; aka "Stay in your lane and drive on the shoulder".

What happens next?

Planning for product maturity; aka “You gotta know when to hold ‘em and know when to fold ‘em”.


Product management concepts factor into every aspect of the business and hence can be approached from a number of different—but complementary—perspectives. This course skews towards a more business-focused discussion of product management, while incorporating key technical elements.

We set out to understand what it takes to deliver a minimum viable product (MVP), including a review of the different types of MVPs and when to use each one, the various tools that can help us define an MVP, hypothesis testing, and metrics. We then work with tools for agile product design such as user stories, model users (personas), storyboards, and ready stories. This is followed by a very high-level survey of UX design approaches and UI design (from the perspective of achieving desired product and business goals, not visual asthetics), product architecture considerations, and how to work with engineering teams. The second half of the course focuses on managing the product roadmap: working with product backlogs; prioritizing features and managing tradeoffs. We bring some of these techniques together in a multi week-long simulation of an actual product—with some shortcuts, in the interests of time!

While most of the course is geared towards developing early-stage products in small companies or start-ups, we also touch on techniques more relevant to larger or more established product organizations, e.g. managing product portfolios, complementary products, and planned obsolescence.

Coursework

This course incorporates a mix of case studies, in-class exercises, product design sessions, written work, and presentations. A key element of product management is communication, so there is an expectation that every student will contribute regularly to class discussions. You will work in small groups during class, rapidly developing new concepts and ideas which you will then present to the rest of the class. Unlike many other courses in the MPCS, you will be called upon to challenge the ideas presented by your fellow students—in a constructive manner, of course!

Grading

The grade for this course is split roughly evenly between homework assignments, quizzes, and in-class activities. Note that overall class participation will be a substantial component of the final grade.

Reference Material

While there is no prescribed reading for this course, we will review the approaches developed by Geoffrey Moore, as presented in his classic book "Crossing the Chasm", so feel free to get yourself a copy if you want to dive deeper into some of the concepts.

Prerequisites

This course assumes no prior knowledge of product management concepts or specific technologies. However, you may find some of the material easier to put into perspective if you're familiar with software design patterns, or have taken one of the other software engineering courses offered in the MPCS.

Globus

Globus (www.globus.org) is software- and platform-as-a-service for research data management, developed and operated by a group of us in the Office of Research and National Laboratories. The service offers a suite of data and user management capabilities to the research community, encompassing file transfer and sharing, identity management, and data publication. Globus capabilities are accessible via both a web browser and REST APIs. Web access allows Globus to address the needs of research labs through a software-as-a-service (SaaS) model, while REST APIs address the needs of developers of research services, who can use Globus as a platform to simplify access via data portals, science gateways, and other web applications.

Globus is currently used by all R1 research institutions in the USA, many national laboratories, federal facilities, as well as hundreds of non-profit and commercial organizations around the world. Researchers have transferred more than an exabyte(!) of data and shared billions of files using Globus since we first deployed the service in November 2010.

About Me

I'm the customer guy at Globus, and my goal is to make Globus sustainable so that every researcher in the world can use the amazing data management capabilities we've built. This means getting institutions to upgrade from the free usage tier and take advantage of the many premium features in the service—if you're reading this and still using Globus for free, I hope you'll contact me about subscribing :-)

At the same time I have the urge to scratch my technical itch, which I do by teaching Cloud Computing and Product Management in the CS Masters program. Every year I have the privilege of working with dozens of smart, considerate students, who go on to achieve great things. It's always gratifying to see and hear from our graduates when they land that special job with a leading tech company or a non-profit that's changing the world. Thank you to those who stay in touch!

Other than that, I'm still recovering from my management consulting days ...being an advisor to early stage companies is my occasional fix, so do let me know if you have a nugget that you want to turn into a gold bar.

The obligatory formal "bio" is included below.



Vas is Chief Customer Officer for Globus, innovative software-as-a-service for research data management, developed and operated by the University of Chicago. His responsibilities include sales, marketing, customer support, training, and generally working with current and prospective users to grow adoption of the service and make it sustainable. Vas is also a lecturer in the Masters Program in Computer Science, where he teaches courses on Cloud Computing and Product Management.

Vas has over 30 years of experience in operational and consulting roles, spanning strategy, marketing and technology. An experienced software product marketing professional with a passion for shaping emerging technologies to bring innovative products to market, Vas has nurtured early stage companies into successful businesses, and consulted to companies on a wide range of strategic issues.

Prior to joining the University, Vas was a principal at Strategos, the innovation consulting firm founded by Gary Hamel, where he led Fortune 100 management teams in defining their growth agenda. Earlier, Vas led marketing efforts at Univa, a leading provider of grid and cloud computing solutions. Vas joined Univa's founding team shortly after inception and was instrumental in defining the product vision, raising venture capital and launching the company's initial products.

In the late 1990's Vas served as vice president of product management and corporate strategy at CrossWorlds Software, the enterprise application integration pioneer, and was part of the leadership team that grew CrossWorlds from a start-up to a successful public company that was subsequently acquired by IBM.

Vas was also chief technology officer at Cimnet Systems, a company specializing in software for electronics manufacturing, which was acquired by Consona in 2005. At Cimnet he led product strategy and development of the company's supplier management and business intelligence solutions. Prior to Cimnet, Vas was vice president of strategy and product management at Promeria, a supplier relationship management company which was acquired by Ariba.

Vas' management consulting experience includes Booz & Company (now Strategy&), where he focused on supply chain strategy and customer service level optimization, and Accenture, where he helped clients in the financial services industry automate trading and back office operations. He has a deep technical understanding of system development for real-time applications, including data distribution, analytics, and trading platforms for derivatives and fixed income securities.

Vas holds an MBA with High Distinction from the Ross School of Business at the University of Michigan, Ann Arbor and a BS in Electrical Engineering from the University of the Witwatersrand in South Africa. He remains a network partner with Strategos and is an advisor to early-stage technology companies on all aspects of strategy, marketing, and product management.

Contact

Call:

+1 (773) 702-5376