Difference between revisions of "IU:TestPage"

From IU
Jump to navigation Jump to search
 
(83 intermediate revisions by the same user not shown)
Line 1: Line 1:
   
  +
= Market Research for IT Startups =
= Advanced Linux =
 
* '''Course name''': Advanced Linux
+
* '''Course name''': Market Research for IT Startups
* '''Code discipline''': xxxxx
+
* '''Code discipline''':
* '''Subject area''':
+
* '''Subject area''': Technological Entrepreneurship
   
 
== Short Description ==
 
== Short Description ==
  +
This course is for students who see themselves as entrepreneurs. The course is designed for the early development of business ideas and provides methods and guidelines for business research. The course teaches how to assess the potential of business ideas, hypothesis thinking, methods for generating ideas and testing their quality
This course covers the following concepts: The fundamental principles for `booting`; Linux Kernel: understanding, programming, debugging, contributing; Device drivers; Power management; Graphical stack overview; Userspace: understating and interaction with Kernel, debugging userspace application and libraries.
 
   
 
== Prerequisites ==
 
== Prerequisites ==
   
 
=== Prerequisite subjects ===
 
=== Prerequisite subjects ===
  +
* N/A
 
   
 
=== Prerequisite topics ===
 
=== Prerequisite topics ===
  +
* N/A
 
   
 
== Course Topics ==
 
== Course Topics ==
Line 22: Line 22:
 
! Section !! Topics within the section
 
! Section !! Topics within the section
 
|-
 
|-
  +
| Ideation tools ||
| X86/Arm assembler introduction ||
 
  +
# Art VS Creativity
# Basic assembler: registers, operations
 
  +
# Ability to discover
# x86 ABI reference
 
  +
# How to generate ideas
# Context switching
 
  +
# Creativity sources
# CPU security rings
 
  +
# Ideation in groups
  +
# Rules for ideation for startups
 
|-
 
|-
| Userspace ||
+
| Market research content ||
  +
# Types of research: primary vs secondary
# Executable files overview
 
  +
# How to plan a research
# ELF format
 
  +
# Market research chapters content
# SO format
 
  +
# Frameworks used in a market research (SWOT, Persona, etc)
# POSIX API
 
  +
# Tools and sources to conduct a competitors analysis
 
|-
 
|-
| Userspace debugging (GDB) ||
+
| Customer development ||
  +
# Interviews are the main tool for “Get Out The Building” technique
# Debugging techniques overview
 
  +
# The "Mum's Test"
# GDB (Gnu debugger) usage
 
  +
# Jobs-To-Be-Done
# Stack trace
 
  +
# Good and bad interview questions
# Watchpoints/breakpoints
 
 
|-
 
|-
| Linux Kernel introduction ||
+
| Market sizing ||
  +
# Market analysis VS market sizing
# Kernel usage
 
  +
# Sizing stakeholders and their interests
# Supported HW
 
  +
# Sizing methods
# Building the kernel
 
  +
# TAM SAM SOM calculation examples
 
|-
 
|-
| Booting the Kernel ||
+
| Data for a research ||
  +
# Sources and tools for competitors overview
# Boot Sequence
 
  +
# Sources and tools for product and traffic analysis
# Device Tree
 
  +
# Sources and tools for trend watching
# U-boot
 
  +
# Life hacks for search
# initrd/initramfs
 
 
|-
 
|-
| Kernel Modules ||
+
| Founder motivation ||
  +
# Ways to Stay Motivated as an Entrepreneur
# Linux device and driver m​odel
 
  +
# Exercises for founders motivation
# Virtual Filesystems
 
 
|-
 
|-
| Memory management ||
+
| Pitch Day ||
  +
# Market research results presentations
# Physical Memory
 
  +
|}
# Virtual Memory
 
  +
# Memory Allocation
 
|-
 
| Threads, processes and scheduling ||
 
# Thread
 
# Processes
 
# Timers
 
|-
 
| Concurrent access to resources ||
 
# Mutexes
 
# Spin locks
 
# RW-locks
 
|}
 
 
== Intended Learning Outcomes (ILOs) ==
 
== Intended Learning Outcomes (ILOs) ==
   
 
=== What is the main purpose of this course? ===
 
=== What is the main purpose of this course? ===
  +
This course aims to give students theoretical knowledge and practical skills on how to assess market potential at an early stage of an IT startup (or any company) development. The ultimate goal is to teach students to conduct market research for their business.
The main purpose of this course is to give the students advanced knowledge of how Linux operation system boots, works and what parts it is consists of.
 
   
 
=== ILOs defined at three levels ===
 
=== ILOs defined at three levels ===
Line 79: Line 72:
 
==== Level 1: What concepts should a student know/remember/explain? ====
 
==== Level 1: What concepts should a student know/remember/explain? ====
 
By the end of the course, the students should be able to ...
 
By the end of the course, the students should be able to ...
  +
* Market research techniques using open data,
* Principles of Operating Systems.
 
  +
* Typology of market assessment methods,
* Principles of bootloaders (first- /second- stage).
 
  +
* Types of research data and their application,
* Linux booting principles.
 
  +
* Market research components: competitors overview, value proposition, trend watching, venture status, business models, buyers profile etc
* Linux Kernel and apps debugging principles.
 
   
 
==== Level 2: What basic practical skills should a student be able to perform? ====
 
==== Level 2: What basic practical skills should a student be able to perform? ====
 
By the end of the course, the students should be able to ...
 
By the end of the course, the students should be able to ...
  +
* Methods of ideation,
* Memory management in Kernel and userspace.
 
  +
* TAM SAM SOM method, 2 approaches,
* Linux kernel subsustems.
 
* Concurrent access to resources.
+
* Applied tools and resources for market sizing,
  +
* Principles to work with business hypotheses
* HW devices interaction in Linux.
 
* Interrupt and multithreading execution.
 
* Real- and virtual- filesystems interaction.
 
   
 
==== Level 3: What complex comprehensive skills should a student be able to apply in real-life scenarios? ====
 
==== Level 3: What complex comprehensive skills should a student be able to apply in real-life scenarios? ====
 
By the end of the course, the students should be able to ...
 
By the end of the course, the students should be able to ...
  +
* Identify and describe the market
* Kernel drivers design skills.
 
  +
* Assess market potential for any business idea
* Linux Kernel contribution and advanced GIT knowledge.
 
  +
* Conduct relevant market research before starting up a business
* C language low-level Kernel programming.
 
  +
* Use the most relevant and high-quality data for a market research
* C/C++ language system programming.
 
  +
* POSIX API usage.
 
* Kernel and userspace debugging (including KGDB/GDB).
 
* x86/ARM assembly programming.
 
 
== Grading ==
 
== Grading ==
   
Line 110: Line 99:
 
! Grade !! Range !! Description of performance
 
! Grade !! Range !! Description of performance
 
|-
 
|-
| A. Excellent || 100-150 || -
+
| A. Excellent || 85.0-100.0 || -
 
|-
 
|-
| B. Good || 80-100 || -
+
| B. Good || 70.0-84.0 || -
 
|-
 
|-
| C. Satisfactory || 60-79 || -
+
| C. Satisfactory || 50.0-69.0 || -
 
|-
 
|-
| D. Poor || 0-59 || -
+
| D. Fail || 0.0-50.0 || -
 
|}
 
|}
   
Line 125: Line 114:
 
! Activity Type !! Percentage of the overall course grade
 
! Activity Type !! Percentage of the overall course grade
 
|-
 
|-
  +
| Paper #0: Market research structure || 0-10 scale (costs 10% final)
| Labs/seminar classes || 100
 
 
|-
 
|-
  +
| Paper #1: TAM SAM SOM || 0-10 scale (costs 20% final)
| Interim performance assessment || 0
 
 
|-
 
|-
  +
| Workshops activity || 3 points for each of 7 workshops: 1 point=participation, 2 points=discussion, 3 points=valuable results (costs 21% final)
| Exams || 50
 
  +
|-
  +
| Paper #2: Market research || 0-10 scale (costs 30% final)
  +
|-
  +
| Final Presentation || 0-10 scale (costs 20% final)
 
|}
 
|}
   
 
=== Recommendations for students on how to succeed in the course ===
 
=== Recommendations for students on how to succeed in the course ===
  +
Participation is important. Showing up and participating in discussions is the key to success in this course.<br>Students work in teams, so coordinating teamwork will be an important factor for success.<br>Reading the provided materials is mandatory, as lectures will mainly consist of discussions and reflections not slides or reading from scratch.<br>The main assignment in the course is Market research paper which is supposed to be useful not only for this course but s a basis for future business oriented courses
 
   
 
== Resources, literature and reference materials ==
 
== Resources, literature and reference materials ==
   
 
=== Open access resources ===
 
=== Open access resources ===
  +
* - article with reflections on the methodology book on the 55 typical business models
* Writing Kernel Module: i2c -
 
  +
* - a book with instructions on how to communicate with your potential users. How to conduct interviews so that you understand what the client wants to say and not what you want to hear.
* Fundamental Linux Kernel programming by Krishenko V.A., Rayzanova N.U. - /
 
  +
* - the case book on the Jobs To Be Done. With JTBD, we can make predictions about which products will be in demand in the market and which will not. The idea behind the theory is that people don't buy products, but "hire" them to perform certain jobs.
* Linux Operating System by Kuryachiy G.V., Malinskiy K.A. -
 
  +
* A selection of with a summary of key ideas from Harvard Business Review
* Systemd after 10 years, historical and techical review, -
 
  +
* F. Sesno "" - the book on how to get information out of people through questions.
* Evolution of Linux Kernel by Novikov E.M., -
 
  +
* a visual guide book to dealing with your inner procrastinator
* Online resources shared by instructor
 
   
 
=== Closed access resources ===
 
=== Closed access resources ===
  +
* Crunchbase.com
 
  +
* Statista.com
   
 
=== Software and tools used within the course ===
 
=== Software and tools used within the course ===
  +
* Boardofinnovation.com
 
  +
* Miro.com
  +
* Notion.com
  +
* MS Teams
  +
 
= Teaching Methodology: Methods, techniques, & activities =
 
= Teaching Methodology: Methods, techniques, & activities =
   
 
== Activities and Teaching Methods ==
 
== Activities and Teaching Methods ==
 
{| class="wikitable"
 
{| class="wikitable"
|+ Activities within each section
+
|+ Teaching and Learning Methods within each section
 
|-
 
|-
! Learning Activities !! Section 1 !! Section 2 !! Section 3 !! Section 4 !! Section 5 !! Section 6 !! Section 7 !! Section 8 !! Section 9
+
! Teaching Techniques !! Section 1 !! Section 2 !! Section 3 !! Section 4 !! Section 5 !! Section 6 !! Section 7
 
|-
 
|-
| Development of individual parts of software product code || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1
+
| Problem-based learning (students learn by solving open-ended problems without a strictly-defined solution) || 1 || 1 || 1 || 1 || 1 || 1 || 1
 
|-
 
|-
| Homework and group projects || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 0
+
| Project-based learning (students work on a project) || 1 || 1 || 1 || 1 || 1 || 1 || 1
 
|-
 
|-
| Midterm evaluation || 1 || 1 || 1 || 1 || 0 || 0 || 0 || 0 || 0
+
| Differentiated learning (provide tasks and activities at several levels of difficulty to fit students needs and level) || 1 || 1 || 1 || 1 || 1 || 1 || 1
 
|-
 
|-
| Testing (written or computer based) || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1
+
| Contextual learning (activities and tasks are connected to the real world to make it easier for students to relate to them); || 1 || 1 || 1 || 1 || 1 || 1 || 1
 
|-
 
|-
| Discussions || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1
+
| Business game (learn by playing a game that incorporates the principles of the material covered within the course). || 1 || 1 || 1 || 1 || 1 || 1 || 1
|}
+
|-
  +
| inquiry-based learning || 1 || 1 || 1 || 1 || 1 || 1 || 1
== Formative Assessment and Course Activities ==
 
  +
|}
 
=== Ongoing performance assessment ===
 
 
==== Section 1 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
  +
|+ Activities within each section
|+
 
 
|-
 
|-
  +
! Learning Activities !! Section 1 !! Section 2 !! Section 3 !! Section 4 !! Section 5 !! Section 6 !! Section 7
! Activity Type !! Content !! Is Graded?
 
 
|-
 
|-
| Question || ARM architecture is faster than x86, itn’s it? || 1
+
| Interactive Lectures || 1 || 1 || 1 || 1 || 1 || 1 || 1
 
|-
 
|-
| Question || Why does antivirus software works in RING0? || 1
+
| Lab exercises || 1 || 1 || 1 || 1 || 1 || 1 || 0
 
|-
 
|-
| Question || What is the main purpose of having interrupts? || 1
+
| Group projects || 1 || 0 || 0 || 0 || 0 || 1 || 1
 
|-
 
|-
  +
| Flipped classroom || 1 || 1 || 1 || 1 || 1 || 1 || 0
| Question || How-to debug anything inside interrupt context? || 1
 
 
|-
 
|-
| Question || Show the difference in x86 and ARM CPU registers. || 0
+
| Discussions || 1 || 1 || 1 || 1 || 1 || 1 || 1
 
|-
 
|-
  +
| Presentations by students || 1 || 0 || 1 || 0 || 0 || 0 || 1
| Question || Create `basic` atomic operations for ARM in x86 (and vice versa). || 0
 
 
|-
 
|-
  +
| Oral Reports || 1 || 0 || 1 || 0 || 0 || 0 || 1
| Question || Implement simple context switching without threads. || 0
 
|}
 
==== Section 2 ====
 
{| class="wikitable"
 
|+
 
 
|-
 
|-
  +
| Cases studies || 0 || 1 || 0 || 1 || 1 || 1 || 0
! Activity Type !! Content !! Is Graded?
 
 
|-
 
|-
| Question || Why can’t we just use .EXE and .DLL files on Linux? || 1
+
| Experiments || 0 || 0 || 1 || 0 || 0 || 0 || 0
 
|-
 
|-
| Question || Do .SO files actually share same memory physical addresses? || 1
+
| Written reports || 0 || 0 || 1 || 0 || 0 || 1 || 0
 
|-
 
|-
| Question || POSIX vs WinAPI? Which is better from portability point of view? || 1
+
| Individual Projects || 0 || 0 || 0 || 1 || 0 || 0 || 0
 
|-
 
|-
| Question || What is the most secure method for interprocess communication? || 1
+
| Peer Review || 0 || 0 || 0 || 0 || 0 || 0 || 1
|-
+
|}
  +
| Question || What is the fastest method for interprocess communication? || 1
 
  +
== Formative Assessment and Course Activities ==
|-
 
  +
| Question || Create simple app for ELF format parsing. || 0
 
  +
=== Ongoing performance assessment ===
|-
 
  +
| Question || Create app that shows dependencies between .so and executable file. || 0
 
  +
==== Section 1 ====
|-
 
| Question || Create two apps communicating with each other. At least 2 methods. Compare the speed. || 0
 
|-
 
| Question || Create app with joinable and detachable threads. Check the difference. || 0
 
|-
 
| Question || Create app that uses fork() and execve() with controlling child process. || 0
 
|}
 
==== Section 3 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 224: Line 208:
 
! Activity Type !! Content !! Is Graded?
 
! Activity Type !! Content !! Is Graded?
 
|-
 
|-
  +
| Discussion || Difference between Art and Creativity. Examples from your personal experience <br> Tools to manage your attention: work with exercises above <br> Is it true that an ideation stage is the very first step to take when starting your own business? If not, what needs to be done before? <br> Idea diary: share your experience, was it useful? How to keep motivation to continue? <br> Sharing your business ideas: is it risky for a founder? Why? <br> Name and discuss principles of hypothesis thinking <br> Name and comment on ideation tool you know. Did you have an experience with it? <br> Where to take creativity? Your advice <br> Lets find examples of “Steal like an artist” approach among startups <br> Create a list of 5 business ideas you have ever had in your mind. Choose 1 and make an exhaustive list of the problems that are associated with the proposed business idea. || 0
| Question || What is GDB? What platforms can be debugged using GDB? || 1
 
 
|-
 
|-
  +
| Workshop || Break into teams, choose from the list below 1 tool to work with. Use the templates to create new business ideas. Summarize the results. Share your results and experience of using the template with other teams || 1
| Question || Do we have any alternatives for GDB? || 1
 
 
|-
 
|-
  +
| Exercise || Start an "Idea diary" (not necessarily business ideas): create a convenient place for notes (notion, pinterest, instagram, paper notebook, etc.). Note the time/place/circumstances of ideas coming, learn to write down ideas. Draw conclusions from 1 week's work: where, when, how, why new ideas arise and whether you can manage their flow. || 0
| Question || What should we have related to the app to debug it in GDB? || 1
 
|-
+
|}
  +
| Question || Name popular GDB front-ends. Check what front-ends for GDB you already use. || 1
 
  +
==== Section 2 ====
|-
 
| Question || What alternatives to GHIDRA do we have for different platforms? || 1
 
|-
 
| Question || Debug simple app using GDB with symbols in runtime. Use breakpoints and watchpoints and step by step debugging. || 0
 
|-
 
| Question || Load coredump and debug it in GDB. || 0
 
|-
 
| Question || Fix few variables in binary file using GHIDRA without source code. || 0
 
|}
 
==== Section 4 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 246: Line 221:
 
! Activity Type !! Content !! Is Graded?
 
! Activity Type !! Content !! Is Graded?
 
|-
 
|-
  +
| Discussion || What are the basic steps in market research? <br> What are the commonly used market research methods? <br> What research question types can be asked in surveys? <br> Should startup prefer primary or secondary research? || 0
| Question || Monolithic kernel vs Micro-kernel. What is faster and why? || 1
 
 
|-
 
|-
  +
| Workshop || SWOT analysis: compare your business idea with competitors and market situation <br> Get familiar with industry trends and reports: Find and create a list of 3 to 5 business research papers or trend reports in your industry || 0
| Question || How Linux works on HW without IOMMU? || 1
 
 
|-
 
|-
  +
| Home written assignment || Market research doc: create a structure that is: <br> 1-2 pages long <br> Describes your business idea <br> Contains the structure of your future research <br> Contains a list of questions to answer during the research for each chapter proposed <br> Contains links and references to data sources potentilly interesting to use in a research <br> Its feasible: it should be a chance you may answer all the questions stated in the doc <br> The doc format is designed and well structured || 1
| Question || Tools required for building Linux Kernel. || 1
 
|-
+
|}
  +
| Question || Name few operations systems bases on Linux and name the difference. || 1
 
  +
==== Section 3 ====
|-
 
| Question || Contributing to Open Source software and Kernel. What is the difference? || 0
 
|-
 
| Question || Git usage: commits, email-patches. || 0
 
|-
 
| Question || Git usage: rewriting history. || 0
 
|-
 
| Question || Building Linux Kernel for your own PC. || 0
 
|-
 
| Question || Running new Kernel on your machine. || 0
 
|-
 
| Question || Kernel config file location and editing. || 0
 
|}
 
==== Section 5 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 272: Line 234:
 
! Activity Type !! Content !! Is Graded?
 
! Activity Type !! Content !! Is Graded?
 
|-
 
|-
  +
| Oral test || Good or bad interview question? <br> Useful or useless feedback? || 0
| Question || What is the difference between BIOS and UEFI? What we prefer in nowadays? || 1
 
 
|-
 
|-
  +
| Workshop || Work on your customer profile using the Persona template. Make a client interview script with the help of the Problem-validation-script. || 1
| Question || What is the usage for secure boot? What requirements should be met for this? || 1
 
 
|-
 
|-
  +
| Case study || Watch the video with the case study. This is an example of HOW NOT to take a customer discovery interview. Discuss what went wrong? || 0
| Question || Why in x86 we do not have device tree? And why is it required for ARM platforms? || 1
 
|-
+
|}
  +
| Question || What is the purpose of having initramfs? Can we skip that stage? || 1
 
  +
==== Section 4 ====
|-
 
| Question || Build U-boot || 0
 
|-
 
| Question || Rebuilding initramfs || 0
 
|-
 
| Question || Changing boot order of your PC. Creating simple systemd service. || 0
 
|}
 
==== Section 6 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 292: Line 247:
 
! Activity Type !! Content !! Is Graded?
 
! Activity Type !! Content !! Is Graded?
 
|-
 
|-
  +
| Workshop || Estimate your target market using the TAM-SAM-SOM template in MIRO. Explain the data. || 1
| Question || How kernel module can be compiled and used inside or outside Linux Kernel Image? || 1
 
 
|-
 
|-
  +
| Case study || Learn a market sizing case: online babysitting service || 0
| Question || What is the purpose of System.map file for correct Linux Kernel functionality? || 1
 
|-
+
|}
  +
| Question || What is the real requirement to have virtual filesystems in Linux Kernel? || 1
 
  +
==== Section 5 ====
|-
 
| Question || Name few real and virtual filesystems. Briefly describe usage in real life. || 1
 
|-
 
| Question || Develop and deploy simple Kernel Module outside kernel image. Dynamic Loading. || 0
 
|-
 
| Question || Develop and deploy simple Kernel Module inside kernel image. || 0
 
|-
 
| Question || SysFS/ DebugFS / ProcFS/ TmpFS usage || 0
 
|}
 
==== Section 7 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 312: Line 258:
 
! Activity Type !! Content !! Is Graded?
 
! Activity Type !! Content !! Is Graded?
 
|-
 
|-
  +
| Workshop || Use 3 tools from this lesson's theory that you are least familiar with or have not used at all. From each source, take one insight on the state of your project's market. (For example, the total size of your target market, a leading competitor, number of users, or a growing trend) || 0
| Question || Why do we need virtual memory? || 1
 
 
|-
 
|-
  +
| Oral presentation || Take one tool from the list below and create a “how-to” guide to the service for your classmates. The guide could be done in a form of 1) video-instruction 2) text 3) visualized scheme 4) presentation. The guide must answer how to use a tool and give an example of its use on concrete case study. Studying the guide should take your reader not mach then 15 min. || 1
| Question || Why does Linux Kernel maps itself to every process address space? || 1
 
|-
+
|}
  +
| Question || How does page fault handler work? || 1
 
  +
==== Section 6 ====
|-
 
| Question || What is segmentation fault and how it handles in Linux Kernel? || 1
 
|-
 
| Question || Create simple allocator (myalloc/myfree). || 0
 
|-
 
| Question || Create benchmark for simple allocator. || 0
 
|}
 
==== Section 8 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 330: Line 269:
 
! Activity Type !! Content !! Is Graded?
 
! Activity Type !! Content !! Is Graded?
 
|-
 
|-
  +
| Workshop || Exercises: <br> Personal SWOT Analysis <br> List of Personal Achievements <br> Analysis of Motivating Activities <br> Your Personal Vision || 0
| Question || What is the difference between thread and process? || 1
 
|-
+
|}
  +
| Question || Can process exist without any threads? || 1
 
  +
==== Section 7 ====
|-
 
| Question || What scheduling methods does Linux Kernel has? || 1
 
|-
 
| Question || What make `realtime` OS really realtime? || 1
 
|-
 
| Question || What is the difference between cooperative and preemptive multitasking? || 1
 
|-
 
| Question || Implement your own threads inside app. || 0
 
|-
 
| Question || Implement simple scheduler for your threading app. || 0
 
|-
 
| Question || Implement timer for your app without using `real` timers. || 0
 
|}
 
==== Section 9 ====
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 352: Line 278:
 
! Activity Type !! Content !! Is Graded?
 
! Activity Type !! Content !! Is Graded?
 
|-
 
|-
  +
| Pitch session || The final Market Research report should follow the structure discussed <br> Content of the oral presentation may include: business description, market overview, main sources used in the research, competitors overview, monetization opportunity, market size, further stages of research or business work, team, comments on some challenges during the work || 1
| Question || Why do we need locking structures? || 1
 
|-
+
|}
  +
| Question || Where is mutex preferred on spinlock? || 1
 
|-
 
| Question || Where is spinlock preferred on mutex? || 1
 
|-
 
| Question || Can we just write locking-free code? || 1
 
|-
 
| Question || What is deadlock and how it could be handled? || 1
 
|-
 
| Question || Implement simple locking structures. || 0
 
|-
 
| Question || Implement Wait-die lock. || 0
 
|}
 
 
=== Final assessment ===
 
=== Final assessment ===
 
'''Section 1'''
 
'''Section 1'''
  +
# For the final assessment, students should complete the Market Research paper.
# Describe basic CPU registers and their purpose.
 
  +
# It should follow the market research paper structure, contain information about market volume (TAM SAM SOM), data must be gathered with help of data sources learnt.
# Describe x86 ABI.
 
  +
# The paper should refer to market potential and give the basis to make business decisions, answer questions on how to start and develop your idea, what is your business model, target customer persona, product MVP etc.
# What is context switching and how does it work?
 
  +
# Grading criteria for the final project presentation:
# Name all CPU security rings and describe security levels.
 
  +
# Market sizing has been carried out
# Interrupts. Interrupt handler.
 
  +
# Customer segments are named
  +
# Сompetitor analysis has been conducted
  +
# At least 2 prominent data sources are used
  +
# Customer discovery interviews conducted
  +
# Future steps are mapped out
  +
# The final report is visualized clearly and transparent
 
'''Section 2'''
 
'''Section 2'''
  +
# Describe ELF executable format.
 
# Describe how Linux processes could be load from ELF file.
 
# Describe .SO library loading and their layout in memory.
 
# Describe methods of interprocess communication (at least 2).
 
# POSIX. Describe network operations.
 
# POSIX. Describe pthread library.
 
# POSIX. Describe time operations.
 
# Describe select(), poll() methods. Name the difference.
 
# POSIX. Describe filesystem operations.
 
 
'''Section 3'''
 
'''Section 3'''
  +
# GDB. Why do we need to have symbols? Can we debug without them?
 
# GDB. Describe debugging techniques only using coredump.
 
# GDB. Describe usage or breakpoints and watchpoints.
 
# GDB/GDB Server. Remote debugging. Describe how to do that.
 
# GDB. Describe multiarch debugging.
 
# GDB. Describe how to debug multithreaded application.
 
# GDB. Stack trace. Describe usage and how-to.
 
# GHIDRA. Describe usage flow.
 
 
'''Section 4'''
 
'''Section 4'''
  +
# Briefly describe modern OS architecture. (for ex. Linux)
 
# Describe supported HW by Linux Kernel.
 
# Describe contribution process to Linux Kernel.
 
 
'''Section 5'''
 
'''Section 5'''
  +
# Name popular bootloaders and briefly describe the difference.
 
# Describe all boot sequence starting from pushing START button.
 
# Describe in details the role of initrd/initramfs in booting process.
 
# First userspace process. Describe how it works and why do we need SystemV/system?
 
 
'''Section 6'''
 
'''Section 6'''
  +
# Describe Linux device and driver model
 
# Real- and Virtual- filesystems. Describe in details.
 
# Name other Linux Kernel subsystems and their usage.
 
 
'''Section 7'''
 
'''Section 7'''
  +
# Describe how virtual memory maps on physical memory.
 
# Describe in details how TLB works. How TLB increases memory operations?
 
# Describe structure of page table, its location and management from OS.
 
# Describe memory allocation techniques. Describe one of them in details.
 
'''Section 8'''
 
# Describe how threading works.
 
# Describe pthread API usage.
 
# Describe difference between monotomic and realtime clocks.
 
# Describe scheduling strategies. Make a suggestion, which one is preferred for different situations.
 
# Describe difference in memory management between threads and processes.
 
'''Section 9'''
 
# Describe mutex internals.
 
# Describe spin lock internals.
 
# Describe deadlock problem and how it could be handled.
 
# Compare different locking methods and make conclusion of which is faster and why.
 
# Deeply describe wait-die locks.
 
# P.1.2.10 Section 10
 
# Section title: Kernel debugging
 
# Topics covered in this section:
 
# Debugging techniques
 
# DebugFS
 
# Other methods overview (J-Tag etc).
 
# KGDB
 
# What forms of evaluation were used to test students’ performance in this section?
 
# Typical questions for ongoing performance evaluation within this section
 
# Name and briefly describe kernel-debugging techniques.
 
# What debug levels for printk do you know and what is their usage?
 
# What other methods of Kernel debugging techniques do you know?
 
# Why can’t we use regular GDB to debug Linux Kernel?
 
# Typical questions for seminar classes (labs) within this section
 
# Usage of DebugFS for basic debugging
 
# Usage of printk and debug levels.
 
# KGDB usage for Kernel debugging.
 
# Test questions for final assessment in this section
 
# Explain usage of debugFS in modern kernels.
 
# Describe main kernel debugging techniques.
 
# P.1.2.11 Section 11
 
# Section title: HW busses
 
# Topics covered in this section:
 
# GPIO
 
# UART
 
# i2c
 
# spi
 
# pin muxing
 
# DMA
 
# What forms of evaluation were used to test students’ performance in this section?
 
# Typical questions for ongoing performance evaluation within this section
 
# What HW bus type should we prefer for flash memory?
 
# What bus is the fastest?
 
# What should we do if we don’t have enough available pins for our needs?
 
# Can spi devices be connected in parallel? How can we do that?
 
# DMA – overkill technique or our current basic needs? Briefly review advantages and disadvantages of DMA.
 
# Typical questions for seminar classes (labs) within this section
 
# Implement connection to other device using UART. Exchange data.
 
# Note: additional tasks will be given depends on current HW availability.
 
# Test questions for final assessment in this section
 
# Describe i2c bus. Usage of i2c bus.
 
# Describe spi bus. Usage of spi bus.
 
# Describe GPIO subsystem. Usage of GPIO.
 
# Describe pin muxing.
 
# Describe usage of DMA and consider exchange speed with and without DMA.
 
# P.1.2.12 Section 12
 
# Section title: PCI
 
# Topics covered in this section:
 
# PCI Physical parameters
 
# PCI Electrical parameters
 
# PCI Logical model
 
# PCI Configuration
 
# What forms of evaluation were used to test students’ performance in this section?
 
# Typical questions for ongoing performance evaluation within this section
 
# Briefly describe PCI specification.
 
# What is difference between PCI and PCIe?
 
# Name devices that could be connected to PC using PCI bus.
 
# Device tree and PCI. Briefly describe how we can configure them.
 
# Typical questions for seminar classes (labs) within this section
 
# Measure PCI Ex bus speed with different connection types: x1, x2, x4 and x16.
 
# Test questions for final assessment in this section
 
# Describe parameters of PCI bus interface.
 
# Describe usage of PCI bus in modern PC/laptop.
 
# Describe configuration and enumeration of devices on PCI bus.
 
# P.1.2.13 Section 13
 
# Section title: USB
 
# Topics covered in this section:
 
# USB Physical parameters
 
# USB Electrical parameters
 
# USB Logical model
 
# USB Configuration and enumeration
 
# What forms of evaluation were used to test students’ performance in this section?
 
# Typical questions for ongoing performance evaluation within this section
 
# Briefly describe USB specification.
 
# USB/A/B – type C. Describe difference.
 
# What devices could be connected using USB bus?
 
# Why we do not reboot after USB device connection to discover it?
 
# Can we add USB devices to device tree for faster enumeration?
 
# Typical questions for seminar classes (labs) within this section
 
# Implement simple USB device driver for keyboard/flash card/mouse etc.
 
# Test questions for final assessment in this section
 
# Describe parameters of USB interface.
 
# Describe usage of USB in modern PC/laptop.
 
# Describe configuration and enumeration of devices on USB.
 
# P.1.2.14 Section 14
 
# Section title: Graphical Stack overview
 
# Topics covered in this section:
 
# Framebuffer
 
# X11
 
# Wayland
 
# UI interfaces: GTK/Qt
 
# What forms of evaluation were used to test students’ performance in this section?
 
# Typical questions for ongoing performance evaluation within this section
 
# Linux- and Windows- comparison of graphical stack.
 
# Can we access framebuffer when it is double- or triple- buffered?
 
# What part of OS owns framebuffer?
 
# How X11 knows when to redraw on screen info?
 
# Can we use X11 and Wayland together?
 
# Typical questions for seminar classes (labs) within this section
 
# Create app with direct access to framebuffer.
 
# Use X11 forwarding using SSH tunnel.
 
# Create simple GTK/Qt application.
 
# Test questions for final assessment in this section
 
# Describe the usage of framebuffer.
 
# Describe the purpose of X11 system.
 
# Describe the purpose and advantages of Wayland framework.
 
   
 
=== The retake exam ===
 
=== The retake exam ===
 
'''Section 1'''
 
'''Section 1'''
  +
# For the retake, students have to submit the results of the market sizing exercise with the TAM SAM SOM method in the form of a visual framework studied.
 
 
'''Section 2'''
 
'''Section 2'''
   
Line 543: Line 321:
   
 
'''Section 7'''
 
'''Section 7'''
 
'''Section 8'''
 
 
'''Section 9'''
 

Latest revision as of 09:50, 29 May 2023

Market Research for IT Startups

  • Course name: Market Research for IT Startups
  • Code discipline:
  • Subject area: Technological Entrepreneurship

Short Description

This course is for students who see themselves as entrepreneurs. The course is designed for the early development of business ideas and provides methods and guidelines for business research. The course teaches how to assess the potential of business ideas, hypothesis thinking, methods for generating ideas and testing their quality

Prerequisites

Prerequisite subjects

  • N/A

Prerequisite topics

  • N/A

Course Topics

Course Sections and Topics
Section Topics within the section
Ideation tools
  1. Art VS Creativity
  2. Ability to discover
  3. How to generate ideas
  4. Creativity sources
  5. Ideation in groups
  6. Rules for ideation for startups
Market research content
  1. Types of research: primary vs secondary
  2. How to plan a research
  3. Market research chapters content
  4. Frameworks used in a market research (SWOT, Persona, etc)
  5. Tools and sources to conduct a competitors analysis
Customer development
  1. Interviews are the main tool for “Get Out The Building” technique
  2. The "Mum's Test"
  3. Jobs-To-Be-Done
  4. Good and bad interview questions
Market sizing
  1. Market analysis VS market sizing
  2. Sizing stakeholders and their interests
  3. Sizing methods
  4. TAM SAM SOM calculation examples
Data for a research
  1. Sources and tools for competitors overview
  2. Sources and tools for product and traffic analysis
  3. Sources and tools for trend watching
  4. Life hacks for search
Founder motivation
  1. Ways to Stay Motivated as an Entrepreneur
  2. Exercises for founders motivation
Pitch Day
  1. Market research results presentations

Intended Learning Outcomes (ILOs)

What is the main purpose of this course?

This course aims to give students theoretical knowledge and practical skills on how to assess market potential at an early stage of an IT startup (or any company) development. The ultimate goal is to teach students to conduct market research for their business.

ILOs defined at three levels

Level 1: What concepts should a student know/remember/explain?

By the end of the course, the students should be able to ...

  • Market research techniques using open data,
  • Typology of market assessment methods,
  • Types of research data and their application,
  • Market research components: competitors overview, value proposition, trend watching, venture status, business models, buyers profile etc

Level 2: What basic practical skills should a student be able to perform?

By the end of the course, the students should be able to ...

  • Methods of ideation,
  • TAM SAM SOM method, 2 approaches,
  • Applied tools and resources for market sizing,
  • Principles to work with business hypotheses

Level 3: What complex comprehensive skills should a student be able to apply in real-life scenarios?

By the end of the course, the students should be able to ...

  • Identify and describe the market
  • Assess market potential for any business idea
  • Conduct relevant market research before starting up a business
  • Use the most relevant and high-quality data for a market research

Grading

Course grading range

Grade Range Description of performance
A. Excellent 85.0-100.0 -
B. Good 70.0-84.0 -
C. Satisfactory 50.0-69.0 -
D. Fail 0.0-50.0 -

Course activities and grading breakdown

Activity Type Percentage of the overall course grade
Paper #0: Market research structure 0-10 scale (costs 10% final)
Paper #1: TAM SAM SOM 0-10 scale (costs 20% final)
Workshops activity 3 points for each of 7 workshops: 1 point=participation, 2 points=discussion, 3 points=valuable results (costs 21% final)
Paper #2: Market research 0-10 scale (costs 30% final)
Final Presentation 0-10 scale (costs 20% final)

Recommendations for students on how to succeed in the course

Participation is important. Showing up and participating in discussions is the key to success in this course.
Students work in teams, so coordinating teamwork will be an important factor for success.
Reading the provided materials is mandatory, as lectures will mainly consist of discussions and reflections not slides or reading from scratch.
The main assignment in the course is Market research paper which is supposed to be useful not only for this course but s a basis for future business oriented courses

Resources, literature and reference materials

Open access resources

  • - article with reflections on the methodology book on the 55 typical business models
  • - a book with instructions on how to communicate with your potential users. How to conduct interviews so that you understand what the client wants to say and not what you want to hear.
  • - the case book on the Jobs To Be Done. With JTBD, we can make predictions about which products will be in demand in the market and which will not. The idea behind the theory is that people don't buy products, but "hire" them to perform certain jobs.
  • A selection of with a summary of key ideas from Harvard Business Review
  • F. Sesno "" - the book on how to get information out of people through questions.
  • a visual guide book to dealing with your inner procrastinator

Closed access resources

  • Crunchbase.com
  • Statista.com

Software and tools used within the course

  • Boardofinnovation.com
  • Miro.com
  • Notion.com
  • MS Teams

Teaching Methodology: Methods, techniques, & activities

Activities and Teaching Methods

Teaching and Learning Methods within each section
Teaching Techniques Section 1 Section 2 Section 3 Section 4 Section 5 Section 6 Section 7
Problem-based learning (students learn by solving open-ended problems without a strictly-defined solution) 1 1 1 1 1 1 1
Project-based learning (students work on a project) 1 1 1 1 1 1 1
Differentiated learning (provide tasks and activities at several levels of difficulty to fit students needs and level) 1 1 1 1 1 1 1
Contextual learning (activities and tasks are connected to the real world to make it easier for students to relate to them); 1 1 1 1 1 1 1
Business game (learn by playing a game that incorporates the principles of the material covered within the course). 1 1 1 1 1 1 1
inquiry-based learning 1 1 1 1 1 1 1
Activities within each section
Learning Activities Section 1 Section 2 Section 3 Section 4 Section 5 Section 6 Section 7
Interactive Lectures 1 1 1 1 1 1 1
Lab exercises 1 1 1 1 1 1 0
Group projects 1 0 0 0 0 1 1
Flipped classroom 1 1 1 1 1 1 0
Discussions 1 1 1 1 1 1 1
Presentations by students 1 0 1 0 0 0 1
Oral Reports 1 0 1 0 0 0 1
Cases studies 0 1 0 1 1 1 0
Experiments 0 0 1 0 0 0 0
Written reports 0 0 1 0 0 1 0
Individual Projects 0 0 0 1 0 0 0
Peer Review 0 0 0 0 0 0 1

Formative Assessment and Course Activities

Ongoing performance assessment

Section 1

Activity Type Content Is Graded?
Discussion Difference between Art and Creativity. Examples from your personal experience
Tools to manage your attention: work with exercises above
Is it true that an ideation stage is the very first step to take when starting your own business? If not, what needs to be done before?
Idea diary: share your experience, was it useful? How to keep motivation to continue?
Sharing your business ideas: is it risky for a founder? Why?
Name and discuss principles of hypothesis thinking
Name and comment on ideation tool you know. Did you have an experience with it?
Where to take creativity? Your advice
Lets find examples of “Steal like an artist” approach among startups
Create a list of 5 business ideas you have ever had in your mind. Choose 1 and make an exhaustive list of the problems that are associated with the proposed business idea.
0
Workshop Break into teams, choose from the list below 1 tool to work with. Use the templates to create new business ideas. Summarize the results. Share your results and experience of using the template with other teams 1
Exercise Start an "Idea diary" (not necessarily business ideas): create a convenient place for notes (notion, pinterest, instagram, paper notebook, etc.). Note the time/place/circumstances of ideas coming, learn to write down ideas. Draw conclusions from 1 week's work: where, when, how, why new ideas arise and whether you can manage their flow. 0

Section 2

Activity Type Content Is Graded?
Discussion What are the basic steps in market research?
What are the commonly used market research methods?
What research question types can be asked in surveys?
Should startup prefer primary or secondary research?
0
Workshop SWOT analysis: compare your business idea with competitors and market situation
Get familiar with industry trends and reports: Find and create a list of 3 to 5 business research papers or trend reports in your industry
0
Home written assignment Market research doc: create a structure that is:
1-2 pages long
Describes your business idea
Contains the structure of your future research
Contains a list of questions to answer during the research for each chapter proposed
Contains links and references to data sources potentilly interesting to use in a research
Its feasible: it should be a chance you may answer all the questions stated in the doc
The doc format is designed and well structured
1

Section 3

Activity Type Content Is Graded?
Oral test Good or bad interview question?
Useful or useless feedback?
0
Workshop Work on your customer profile using the Persona template. Make a client interview script with the help of the Problem-validation-script. 1
Case study Watch the video with the case study. This is an example of HOW NOT to take a customer discovery interview. Discuss what went wrong? 0

Section 4

Activity Type Content Is Graded?
Workshop Estimate your target market using the TAM-SAM-SOM template in MIRO. Explain the data. 1
Case study Learn a market sizing case: online babysitting service 0

Section 5

Activity Type Content Is Graded?
Workshop Use 3 tools from this lesson's theory that you are least familiar with or have not used at all. From each source, take one insight on the state of your project's market. (For example, the total size of your target market, a leading competitor, number of users, or a growing trend) 0
Oral presentation Take one tool from the list below and create a “how-to” guide to the service for your classmates. The guide could be done in a form of 1) video-instruction 2) text 3) visualized scheme 4) presentation. The guide must answer how to use a tool and give an example of its use on concrete case study. Studying the guide should take your reader not mach then 15 min. 1

Section 6

Activity Type Content Is Graded?
Workshop Exercises:
Personal SWOT Analysis
List of Personal Achievements
Analysis of Motivating Activities
Your Personal Vision
0

Section 7

Activity Type Content Is Graded?
Pitch session The final Market Research report should follow the structure discussed
Content of the oral presentation may include: business description, market overview, main sources used in the research, competitors overview, monetization opportunity, market size, further stages of research or business work, team, comments on some challenges during the work
1

Final assessment

Section 1

  1. For the final assessment, students should complete the Market Research paper.
  2. It should follow the market research paper structure, contain information about market volume (TAM SAM SOM), data must be gathered with help of data sources learnt.
  3. The paper should refer to market potential and give the basis to make business decisions, answer questions on how to start and develop your idea, what is your business model, target customer persona, product MVP etc.
  4. Grading criteria for the final project presentation:
  5. Market sizing has been carried out
  6. Customer segments are named
  7. Сompetitor analysis has been conducted
  8. At least 2 prominent data sources are used
  9. Customer discovery interviews conducted
  10. Future steps are mapped out
  11. The final report is visualized clearly and transparent

Section 2

Section 3

Section 4

Section 5

Section 6

Section 7


The retake exam

Section 1

  1. For the retake, students have to submit the results of the market sizing exercise with the TAM SAM SOM method in the form of a visual framework studied.

Section 2

Section 3

Section 4

Section 5

Section 6

Section 7