Primary Objectives:

  1. Learn about important Software Engineering topics, tools and platforms
  2. Get experience creating and delivering tech talks

Overall Requirements:

  • Develop a 50 minute lecture/tech talk (40 min. presentation / 10 for questions)
  • Write at least 5 quiz questions for your topic
  • Every team member must contribute to the slides, equally
  • Every team member must speak during the talk, equal time (7-10 minutes each)

Tasks:

  1. Here are the topics we'll use this term. I will assign topics to teams as well as presentation dates:
    1. Serverless Compute -- Learn about Azure Functions AND AWS Lambda Functions. What are they? What problems can you solve with them? How do they work? Teach us how to use them to solve real-world problems. Show us a meaningful demo. Benefits and drawbacks? What do they compare to? How do they allow you to solve problems easier and faster than using a traditional architecture? Draw systems/network architecture diagrams to emphasize your point. Think up and answer some interesting questions, i.e. can they still access your data storage layer? Authentication? ...
    2. Javascript Runtime: Node.js -- Teach us about Node. What is it? How does it work? Show us code. Give us a demo. Once you've taught the class how it works, go over its strengths and weaknesses. How is it different than what we're used to? What is it used for and why? How good is it at it's job? What makes it a better solution for some problems and why? Why is it so fast? What other runtimes does it compete with?
    3. Configuration Management Tool: Subversion Open Source Version Control System -- What is it? How does it work? How is it different from Git, how are conflicts handled? Branching, committing, common workflows? Teach the audience how it is used effectively. Perhaps give a demo showing a common workflow used during team-based software development.
    4. Javascript Web Application Platform: Angular.js -- Teach us about this web platform. What is it? How does it work? How is it organized? What is it's architecture? What software design model does it follow or use? How does it access a database? How is it different from ASP.NET MVC? Show us code. Give us a demo. Once you've taught the class how it works, go over its strengths and weaknesses. Since we've already had the Node.js talk you can assume your audience knows all about it.
    5. Javascript Web Application Platform: React.js -- Teach us about this web platform. What is it? How does it work? How is it organized? What is it's architecture? What software design model does it follow or use? How does it access a database? How is it different from ASP.NET MVC? Show us code. Give us a demo. Once you've taught the class how it works, go over its strengths and weaknesses. This talk comes after the Node.js and Angular.js talks so you can assume the audience already knows all about them. Make sure you explain what is unique about React compared to Angular.
    6. New Web Application Platform: Solid -- "A mission to reshape the web as we know it. Solid will foster a new breed of applications with capabilities above and beyond anything that exists today." Wow, big statements. Teach us all about it!
    7. Containers -- Select a container solution (i.e. Docker) and explain what it is, how it works, what problems it solves, ... Give an example of using it in action deploying a web server or web application (you can even put a MVC app in a container and deploy it on Azure)
    8. Google App Engine -- What is it? What does it do? How does it work? How does its deployment work? Architecture? Why would you want to use it? Benefits and drawbacks? What's unique about it?
    9. Agile Project Management Software: Atlassian Jira -- Why we should or shouldn't use this instead of Azure DevOps. Help out next year's class! This is the industry leader in Agile project management tools. Show us why that's the case. How would you set up a backlog and run a sprint using this tool. Show us the steps and how it lets us do Scrum. Basically, how would we use it? How is it different/better/worse than DevOps? Be specific, show us a realistic example project. You can use it online for free for only 7 days, pay for 1 month for $10 or better yet download a local copy (the "self managed version") on your own machine and run for 30 days for free. The self-managed version gives you the option to start with a pre-populated Scrum example. Feel free to use this to learn but you'll need to create your own project separately.
  2. Research your chosen topic and prepare a presentation plan.

    You're not trying to be an expert, just knowledgeable about a technical topic. Your audience is full of software engineers who have been using Agile methods and ASP.NET MVC and who understand much of modern professional software development. Get them the information they need, without fluff or marketing. It's important to cover both the high-level side as well as the technical.

  3. Create a presentation with a set of slides. For a 40 minute talk you'll want no more than 20 slides. Put your slides in or linked from your team Git repository and post a link to it on Slack.
  4. Prepare and give a demonstration. Developers and technical people love demos.
  5. Write at least 5 multiple choice or true/false questions based on your talk. What are 5 of the most important take-away's you want your audience to come away with? Write your questions in Moodle's Gift format, which looks like this:

    [html]Which of the following is <b>not</b> a kind of UML diagram? {
    	~Use case diagram
    	~Class diagram
    	~Sequence diagram
    	=User story relationship diagram
    	}
    
    [html]One drawback of UML modeling for design and development is that it is not language or platform independent. {FALSE}

    Turn in your questions to the instructor by email or DM on Slack. (We'll decide in class if the questions will be distributed.)

  6. Finally, give your presentation on the assigned day. Grading will be based on your content and delivery.