H M < >
CMU597: Industry Project - Lecture 1

Orientation, Project Ideation and Specialism Mapping

Part 1: Module Introduction | Part 2: Technical Specialisms

James Williams

Birmingham Newman University

jwilliams@staff.newman.ac.uk

3-hour session • Group Projects • 2 collaborative tasks

Session Timeline

Part 1: Module Introduction (90 minutes)

30 minutes: Lecture on module aims, collaborative working, and industry projects

45 minutes: Task 1 - Team project ideation workshop

15 minutes: Break & team formation discussions

Part 2: Technical Specialisms & Team Dynamics (90 minutes)

30 minutes: Lecture on skills mapping, roles, and team composition

45 minutes: Task 2 - Team skills matrix and project proposal

15 minutes: Q&A, feedback, and next steps

Learning Objectives

  • Understand the aims and collaborative nature of the Industry Project module
  • Explore successful examples of team-based industry projects
  • Generate project ideas through collaborative group brainstorming
  • Identify team technical specialisms and complementary skills
  • Understand effective team composition and role distribution
  • Map project ideas to team capabilities and industry domains
  • Begin forming project teams with clear roles and goals

What is the Industry Project Module?

Core Purpose: Work collaboratively in a team to apply computer science knowledge and skills to a real-world, industry-oriented project using professional agile project management techniques.
  • Collaborative Teams: Work in groups of 3-5 students
  • Open-Ended Projects: Teams choose direction and specialism
  • Industry-Focused: Solve real problems with practical applications
  • Professional Development: Build portfolio-quality team work
  • Agile Methodology: Sprint-based development with regular reviews
  • Real Collaboration: Version control, code reviews, team coordination

Why Group Projects?

Industry Reality:

  • Software is built by teams, not individuals
  • Collaboration is the #1 skill employers seek
  • Complex projects require diverse expertise
  • Peer code review is industry standard

Learning Benefits:

  • Learn from teammates' strengths
  • Tackle larger, more ambitious projects
  • Practice communication and coordination
  • Experience agile team dynamics
Team Work = Real Work: This module prepares you for professional software development environments where collaboration is essential.

What You'll Learn

  • Agile Team Management: Scrum, sprint planning, daily standups, retrospectives
  • Collaborative Development: Git workflows, branch management, pull requests, code reviews
  • Technical Skills: Deepen expertise in chosen specialisms within your team
  • Communication: Team coordination, stakeholder presentations, documentation
  • Professional Practice: Industry ethics, legal considerations, accessibility standards
  • Role Specialization: Front-end, back-end, DevOps, testing, design, etc.
  • Conflict Resolution: Managing disagreements and keeping teams productive

Assessment Structure

Component 1: Team Presentation (20%)

Format: 500-word equivalent group presentation/demonstration

Content: Present your project, technologies, team roles, and industry application

Focus: Technical demonstration with clear team contribution explanation

Team Assessment: While the presentation is a team effort, you will also individually reflect on your contributions and role within the team.
Key Point: Your presentation should showcase technical depth, practical industry relevance, AND effective teamwork throughout the development process.

What Makes a Project Industry-Oriented?

  • Solves Real Problems: Addresses actual industry needs or challenges
  • Practical Application: Can be deployed or used in real scenarios
  • Current Technologies: Uses modern, industry-standard tools and frameworks
  • Scalable Architecture: Designed to handle growth and change
  • Team-Built Quality: Code reviews, testing, CI/CD pipelines
  • Professional Documentation: README, API docs, architecture diagrams, deployment guides
  • Ethical & Legal: GDPR compliance, accessibility (WCAG), security best practices
  • Maintainable: Clean code, consistent style, well-structured for handover

Appropriate Team Project Scope

A good team project should:

  • ✓ Be achievable in 12 weeks with your team size (3-5 people)
  • ✓ Have clear component separation (front-end, back-end, database, etc.)
  • ✓ Allow parallel development (team members work simultaneously)
  • ✓ Require integration of multiple technologies/systems
  • ✓ Have measurable milestones for sprint planning
  • ✓ Be complex enough to justify a team effort
Avoid: Projects too simple for a team, or overly ambitious projects that can't be completed in one semester.

Example Team Projects: E-Commerce & Business

Multi-vendor Marketplace

Platform with vendor dashboards, product management, payment integration

Team: Front-end, Back-end, Payment API, Admin Panel

Inventory Management System

Real-time stock tracking, analytics dashboard, supplier integration

Team: Dashboard, API, Database, Reporting

Booking & Scheduling Platform

Appointment system with notifications, calendar sync, payment processing

Team: UI/UX, Backend Logic, Integrations, Testing

Customer Relationship Management

CRM with contact management, sales pipeline, email automation

Team: Frontend, Backend, Email Service, Analytics

Technologies: React/Vue, Node.js/Django, PostgreSQL/MongoDB, Stripe, AWS

Example Team Projects: AI/ML & Data Science

Predictive Maintenance System

ML model for equipment failure prediction with dashboard and alerts

Team: ML Engineer, Data Pipeline, Web Dashboard, DevOps

Medical Image Classification

Computer vision for diagnostic assistance with clinician interface

Team: CV Engineer, Data Prep, Web Interface, Validation

Intelligent Chatbot Platform

NLP-powered customer service with admin dashboard and analytics

Team: NLP Dev, Backend, Frontend, Training Data

Real-time Analytics Dashboard

Data visualization platform with streaming data processing

Team: Data Engineer, Viz Specialist, Backend, Frontend

Technologies: Python, TensorFlow/PyTorch, Flask/FastAPI, React, Docker, Cloud platforms

Example Team Projects: Mobile, IoT & Other Domains

Health & Fitness Tracker

Mobile app with wearable integration, progress tracking, social features

Team: Mobile Dev, Backend, Integration, UI/UX

Smart Home Control System

IoT device network with mobile app and web dashboard

Team: IoT Dev, Mobile, Backend, Hardware

Collaborative Learning Platform

Educational app with video, quizzes, progress tracking, gamification

Team: Frontend, Backend, Content System, UX

Security Audit Tool

Automated vulnerability scanner with reporting dashboard

Team: Security Dev, Reporting, CLI, Web Interface

Technologies: React Native/Flutter, Swift/Kotlin, Arduino/Raspberry Pi, Unity, Python security tools

Building an Effective Team

Ideal Team Size: 3-5 Members

3-Person Team:

  • Easier coordination
  • Clear role definition
  • Less integration complexity
  • Good for focused projects

4-5 Person Team:

  • More ambitious scope
  • Diverse skill sets
  • Better redundancy
  • Richer feature sets
Complementary Skills: The best teams have members with different but complementary technical specialisms and working styles.

Common Team Roles in Software Projects

Frontend Developer

UI/UX, user interactions, responsive design

Backend Developer

Server logic, APIs, business rules

Database Specialist

Schema design, queries, optimization

DevOps/Infrastructure

Deployment, CI/CD, hosting, monitoring

QA/Testing Lead

Test strategy, automation, quality assurance

Project Manager/Scrum Master

Sprint planning, coordination, backlog

Note: In smaller teams, members often wear multiple hats

What Makes a Successful Team Project?

  • Clear Communication: Regular standups, shared documentation, defined channels
  • Defined Roles: Everyone knows their responsibilities and deliverables
  • Version Control Discipline: Proper branching, meaningful commits, code reviews
  • Sprint-Based Development: Regular reviews, retrospectives, and adaptations
  • Working Prototype: Integrated, functional system by end of semester
  • Shared Ownership: Team takes collective responsibility for success
  • Professional Documentation: README, setup guides, API docs, architecture diagrams
  • Equal Contribution: Balanced workload with individual accountability

Task 1: Team Project Ideation Workshop

Instructions (Working in potential team groups of 3-5):

  1. Form Discussion Groups (5 min): Find 2-4 other students to work with
  2. Individual Brainstorming (5 min): Each person writes down 2-3 project ideas
  3. Share Ideas (15 min): Present your ideas to your group, discuss:
    • What problem does it solve?
    • Who would use it? (Industry/target users)
    • What are the main features? (5-7 key features)
    • What technologies would we need?
    • How would work be divided among team members?
  4. Converge on Ideas (15 min): As a group, shortlist 2-3 strongest ideas
  5. Feasibility Check (5 min): For each shortlisted idea, ask:
    • Can we build this in 12 weeks?
    • Does it need diverse skills (justifies a team)?
    • Is it exciting for everyone?
  6. Document (5 min): Write down your top 2 team project ideas with key details

Time: 45 minutes

You don't need to finalize teams or projects today - this is exploratory!

Break Time

15 Minutes

Take a break, continue team discussions informally, or ask questions.

Think about: Which team members have complementary skills?

Next: Part 2 - Technical Specialisms and Team Dynamics

Part 2: Technical Specialisms & Team Dynamics

Now that you have team project ideas, let's map team skills, define roles, and understand how to build effective development teams.

In This Part:

  • Identify individual and team technical specialisms
  • Understand different CS industry domains
  • Learn how to align projects with team capabilities
  • Create team skills matrices
  • Define roles and responsibilities within teams
  • Develop provisional team project proposals

What are Technical Specialisms?

Technical Specialism: An area of computer science where a team member has developed expertise, interest, or wants to build deeper knowledge. Teams benefit from diverse specialisms.

Web Development

Full-stack, front-end, back-end, REST APIs

Mobile Development

iOS, Android, cross-platform, native

AI/Machine Learning

Deep learning, NLP, computer vision, MLOps

Data Engineering

Pipelines, ETL, analytics, visualization

Cybersecurity

Penetration testing, secure coding, auditing

DevOps/Cloud

AWS/Azure, CI/CD, containers, infrastructure

Game Development

Unity, Unreal, graphics, game design

IoT/Embedded

Hardware, sensors, edge computing, protocols

Common Industry Domains

Domain Example Applications Common Technologies Team Roles Needed
E-Commerce Online stores, marketplaces, payments React, Node.js, Stripe, PostgreSQL Frontend, Backend, Database, DevOps
Healthcare Patient systems, diagnostics, telemedicine Python, ML libs, FHIR, security ML Engineer, Backend, Security, Frontend
Finance Trading, analytics, risk assessment Java/Python, real-time, encryption Backend, Data Engineer, Security, Frontend
Education LMS, assessment tools, e-learning Web frameworks, databases, media Frontend, Backend, Content, UX
Entertainment Streaming, gaming, social platforms Unity, video APIs, CDNs, WebSockets Game/UI Dev, Backend, Infrastructure, Data
Smart Cities/IoT Traffic, environmental monitoring, utilities IoT platforms, sensors, data pipelines IoT Dev, Data Engineer, Backend, Viz

How to Map Projects to Team Skills

  1. Audit Team Skills: What is each person good at? (Languages, frameworks, tools)
  2. Identify Growth Areas: What does each person want to learn?
  3. Match to Project Requirements: Does your project align with team capabilities?
  4. Check Role Coverage: Can you fill essential roles (frontend, backend, etc.)?
  5. Assess Feasibility: Can your team build this with current + developing skills?
  6. Industry Relevance: Which industry values this project type?
Example: Team has: Strong Python dev + React dev + Database expert → Project: Full-stack e-commerce platform with ML recommendations → Industry: Retail/E-commerce

Creating a Team Skills Matrix

Team Member Primary Skills Want to Learn Project Role
Tom React (Advanced), JavaScript (Advanced) TypeScript, State Management Frontend Lead
Bob Python (Advanced), Django (Intermediate) FastAPI, Docker Backend Lead
Charlie PostgreSQL (Advanced), SQL (Advanced) Redis, Elasticsearch Database & Performance
Dana Git (Intermediate), AWS (Beginner) CI/CD, Kubernetes DevOps & Testing

This 4-person team has complementary skills covering full-stack development

Defining Team Roles & Responsibilities

Each team member should have:

  • Primary Role: Main area of responsibility (e.g., "Frontend Developer")
  • Key Deliverables: Specific features/components they own
  • Secondary Responsibilities: Supporting tasks (e.g., code reviews, documentation)
  • Learning Goals: New skills they want to develop during the project
Avoid: Vague roles like "general developer" or unbalanced workloads. Everyone needs clear ownership of specific components.

Achieving Good Team Skill Balance

✓ Good Balance:

  • Mix of existing expertise and learning goals
  • Coverage of all major project components
  • At least one expert in each critical area
  • Complementary rather than duplicate skills
  • Shared interest in project domain

✗ Poor Balance:

  • Everyone has the same specialism
  • Critical skills gaps (e.g., no backend expertise)
  • Too many learning areas, not enough expertise
  • Misaligned interests within team
  • Uneven skill levels across team

Essential Collaborative Tools & Practices

Tools You'll Use:

Development:

  • Git/GitHub: Version control, PRs
  • VS Code Live Share: Pair programming
  • Docker: Consistent environments

Project Management:

  • Trello/Jira: Sprint boards, backlog
  • Slack/Discord: Team communication
  • GitHub Projects: Issue tracking
Agile Rituals: Daily standups (15 min), Sprint planning (start of sprints), Sprint reviews (end of sprints), Retrospectives (what went well/improve)

Team Communication Best Practices

  • Daily Standups: Brief check-ins (What did you do? What will you do? Blockers?)
  • Written Documentation: Don't rely on memory - document decisions, APIs, setup
  • Code Reviews: All code gets reviewed before merging - improves quality
  • Clear Commit Messages: Describe what and why, not just what
  • Responsive Communication: Reply to team messages within 24 hours
  • Constructive Feedback: Focus on code/ideas, not people
  • Conflict Resolution: Address disagreements early and professionally
Remember: Good communication is the difference between functioning teams and dysfunctional ones.

Git Workflow for Teams

# Feature Branch Workflow (Industry Standard)

# 1. Create a branch for your feature
git checkout -b feature/user-authentication

# 2. Work on your feature, commit regularly
git add .
git commit -m "Add user login endpoint with JWT auth"

# 3. Push your branch to remote
git push origin feature/user-authentication

# 4. Create a Pull Request on GitHub
# - Describe your changes
# - Request review from teammates
# - Address review comments

# 5. After approval, merge to main branch
# - Squash commits if needed
# - Delete feature branch after merge
Key Practice: Never commit directly to main branch. Always use feature branches and pull requests with code reviews.

Managing Common Team Challenges

Challenge Solution
Unequal Contribution Track commits/PRs, sprint reviews show individual work, address early
Schedule Conflicts Set core hours for meetings, use async communication, flexible standups
Technical Disagreements Prototype both approaches if time allows, majority vote, document decision
Merge Conflicts Pull from main frequently, communicate about file changes, small PRs
Scope Creep Define MVP clearly, defer nice-to-haves, sprint reviews keep focus
Skill Gaps Pair programming, code reviews as teaching, document patterns/examples

Making Provisional Team & Project Decisions

Questions for Your Team:

  1. Does everyone in the team have clear, distinct roles?
  2. Do our combined skills cover the project requirements?
  3. Can we realistically complete this in one semester as a team?
  4. Is the project complex enough to justify teamwork?
  5. Will this project help us develop new skills we want?
  6. Is everyone excited about working on this together?
  7. Can we break it into parallel workstreams?
  8. Do we have a clear industry application/user benefit?
Remember: This is provisional - you can refine teams and projects over the next 1-2 lectures. Better to get it right than rush!

Task 2: Team Skills Matrix & Project Proposal

Instructions (In your potential teams of 3-5):

  1. Individual Skills Audit (10 min): Each person lists:
    • Programming languages (proficiency level: Beginner/Intermediate/Advanced)
    • Frameworks & libraries they know
    • Tools & platforms (Git, Docker, AWS, etc.)
    • Areas they want to learn/improve
  2. Create Team Skills Matrix (15 min): Compile everyone's skills:
    • What strengths does the team have?
    • What gaps exist?
    • Who would fill which role?
  3. Match Project to Team (10 min):
    • Review your shortlisted projects from Task 1
    • Which project best matches your team's skills?
    • Can you fill all necessary roles?
  4. Write Provisional Proposal (10 min):
    • Project name and description (2-3 sentences)
    • Team members and their proposed roles
    • Industry domain and target users
    • Key technologies the team will use
    • 5-7 main features/goals
    • How work will be divided

Time: 45 minutes

Submit your team skills matrix and provisional proposal to Moodle by end of day.

Lecture 1 Summary

  • Industry projects are collaborative and prepare you for real software teams
  • Effective teams have complementary skills and clear role definitions
  • Good projects balance ambition with feasibility for the team size
  • Technical specialisms help teams cover all necessary areas
  • Communication and agile practices are essential for team success
  • Git workflows and code reviews maintain code quality
  • Teams should create skills matrices to assess capabilities
  • Provisional teams and projects will be refined in coming weeks

Next Lecture:

Briefs, Requirements and Early Technical Validation
Writing design briefs and testing project feasibility with "Hello World" prototypes

Before Next Lecture

  1. Submit to Moodle (Required):
    • Team skills matrix (who's in your provisional team, their skills)
    • Provisional project proposal (1-page document)
  2. Continue Team Discussions: Refine your team composition if needed
  3. Research Technologies: Look into the main technologies your project will use
  4. Read Agile Basics: Review Scrum Guide (link on Moodle)
  5. Set Up Git: Ensure everyone has Git installed and GitHub accounts
  6. Think About Feasibility: Can you build a "Hello World" version next week?
Help Available: Use Moodle forums for questions, or email me for team/project advice.

Questions?

Contact & Support:

Email: jwilliams@staff.newman.ac.uk

Moodle Forum: Post questions for peer/instructor responses

Office Hours: Check Moodle for schedule

Remember: Team formation and project selection is iterative. Take time to get it right!