Categorii: Tot

realizată de Magdin Stoica 16 zile în urmă

106

PROG 10065 - Midterm Interactive App Development Winter 2025

The midterm for the Interactive App Development course in Winter 2025 is structured around several core exercises and practical tasks. Students will develop various applications using UI Design with XAML, focusing on components such as Labels, Entry fields, ListViews, Buttons, and different layout structures like Horizontal and Vertical Stack Layouts, and Grid Layouts.

PROG 10065 - Midterm
Interactive App Development
Winter 2025

PROG 10065 - Midterm Interactive App Development Winter 2025

Exam Structure

Practical Section
Consists of one program with many parts, similar to the structure you have seen in assignments but simpler

Create object-oriented programs using a variety of objects you use in real-life

Create graphical user interfaces using MAUI that work with business logic objects

Using many objects will teach you to switch your hat when implementing your object-oriented programs

Draw your "thinking map" in UML to ensure you don't get lost

Implement something interesting with each object

Access the object's properties using accessor and mutation methods

Create object and set its properties

Interact with the user to ask for values of properties of the object

Extend in-class exercises with additional functionality

Add functionality to your objects (e.g. add perimeter calculation to an object that can calculate area)

Add information to your objects via field variables

Interactivity

Design/extend GUIs for the exercises we have done in class

Implement any TODOs left for practice in the in-class exercises

Re-create the same exercises from scratch. Just change the words (e.g. instead of Account use Employee)

Verify your understanding in the in-class exec ises

Use the Debugging functionality of the IDE for every program we have done in class

Incremental development

Do NOT write all the code before you compile and run the program for the first time

Run the program often.

If you think the code should have no runtime errors verify it by running the program

Debug the program often

Verify your assumptions

Compile very often. Know the keyboard shortcut.

If you think the code should have no syntax errors verify as often as you can

Take it step by step, one small step at a time

Must use your laptop

If your laptop is not working you will take the exam on paper

You will be evaluated as if you would have taken the exam using an IDE on your laptop

Make sure it works

Implement using the IDE used in class

Starting and submission done via GitHub Classroom & SLATE.

DO NOT FORGET TO COMMIT YOUR FINAL CODE

Screen recording through Teams
2 hours
Open Book

There will be no time to study something for the first time during the exam. The open book is useful so you don't have to memorize things that are readily available like function names, predefined modules and classes etc.

NOT allowed access to AI assistants of any kind (e.g. ChatGPT, Perplexity, GitHub Copilot)

NOT allowed to post or send any information outside of the classroom on the Internet

NOT allowed any means of communicating with someone

NOT allowed to use someone else's work

Access to the professor's solutions for exercises and assignments

Access to YOUR OWN solutions for exercises and assignments

Access to the Internet for online documentation

Access to textbook(s)

Access to slides

Knowledge Section
How to prepare

Practice

Troubleshooting and fixing errors leads to very detailed and through understanding of what you are reading

Verify your solutions against solutions provided in SLATE

Practice using recommended execises

Complete all assignments using provided solutions

Finish all in-class exercises

MS Teams Content

Your notes

Slides

May include application / coding questions

Simple code fragments. The main programming question is left for the practical section of the exam

Fill-in the blanks

Analyze the code and identify output or function

Many types of questions

Short Answers

Matching Questions

Fill-in the Blanks

True/False

Multiple-Choice

Assessment delivered in SLATE

Please ensure only one tab is used in the browser for SLATE

Have the LockDown Browser installed

Please bring your laptop

Worth 50% of the overall exam weight
~50 minutes, precise time to be announced in SLATE

Reading

Code Complete, 2nd Edition [recommended]
Chapter 32: Self-Documenting Code
Chapter 31: Layout and Style
Chapter 24: Refactoring
Chapter 23: Debugging
Chapter 16: Controlling loops
Chapter 15: Using Conditionals
Chapter 14: Organizing Straight-Line Code
Chapter 13: Unusual Data Types
Chapter 12: Fundamental Data Types
Chapter 11: The Power of Variables Names
Chapter 10: General Issues in Using Variables
Chapter 9: The Pseudocode Programming Process
Chapter 8: Defensive Programming
Chapter 7: High-Quality Routines
Chapter 6: Working Classes
Chapter 1: Welcome to Software Construction
Introducing .NET MAUI [required]
Chapter 3: The Fundamentals of .NET MAUI
Chapter 2: Building our first application
Chapter 1: Introduction to .NET MAUI
Head First C#, 5th Edition [required]
Chapter 6: Inheritance. Your object's family tree.
Chapter 5: Encapsulation. How objects keep their Secrets.
Chapter 4: Data, Types, Objects, and References. Managing your app's data.
Chapter 3: Namespaces and Classes. Organizing your code.
Chapter 2: Variables, Statements and Methods. Dive into C# Code.
Chapter 1: Start Building Apps with C#. Build something great fast.

Exercises

Rent Wheels

CollectionView

with objects

Tabs

GitHub: https://github.com/sheridan-prog10065/exercise-rent-wheels-MagdinS
Arithmetic Calculator

Grid Layout

GitHub: https://github.com/sheridan-prog10065/exercise-artithmetic-calculator-MagdinS.git
Card Game
GitHub: https://github.com/sheridan-prog10065/exercise-card-game-MagdinS.git
C# Type Explorer

ListView

with string items

Entry

Labels

Horizontal Stack Layout

GitHub: https://github.com/ProfMStoica/TypeExplorer.git
Hello C# World
GitHub: https://github.com/ProfMStoica/HelloCSharpWorld.git
Basic MAUI App
UI Design with XAML

Buttons

Vertical Stack Layout

GitHub Repository: https://github.com/ProfMStoica/DanceStudioW25.App.git

Modules

Software Development Best Practices
Refactoring
Defensive Programming

Programming Assumptions using Asserts

Commenting

Documentation

XML Comments

Comments and Pseudo-code

Code organization
Naming conventions
C# Programming Language Fundamentals
Repetition in Program Flow with C#

Conditional Loops

do-while

while

break and continue

Counted Loops

foreach

for

Naming the counter variable

Common mistakes

Iteration

Condition

Counter variable

Branching the Program Flow in C#

Common "switch" errors

switch

Conditional expressions

Common "if" errors

if / else if / else

if/else

if

Programming with Statically Typed Languages
Deriving New Types

Typecasting between objects

Method overriding

override

virtual

Calling methods in the base class

Constructors and Inheritance

Derived classes

Base clas

C# Programming with Types

C# Properties

Derived Properties

Calculated

Generally read-only properties

Write-Only Properties

Read-Only Properties

Read-Write Properties

Accessor and Mutator Methods

Method expressions

Constructors

Constructors in derived classes

Constructor chaining

Constructor overloading

Default constructors

Scopes

Visibility

Internal vs. Public

Private vs. Public

Types of Named Scopes

Method Scope

parameter variables

local variables

executable statements

User Defined Scopes

Class scopes

field variables

Namespace Scopes

using statement

namespace statement

Named vs. Unnamed Scopes

What are scopes?

Type Transformations

Compatible and Incompatible Types

Parse()

Conversion from a string to a specific type

ToString()

Conversion from any type to a string

Type casting

Explicit casting

Implicit casting

Parametrized Types

Working with List collections

Initialization

Initializing field variables

Defining a constructor

public visibility (most of the time)

No return type

Same name as the class

Initialization of object variables

Calling the constructor

Using the "new" operator

Initialization gives the variable its first value through an assignment statement

Declarations

Local Variables

What is the difference between local and field variables?

Methods

What is the "type" of a method?

Parameter types

Return type

Field Variables

Specifying field variable visibility and type

How is it done?

Where is it done?

Declarations define the type of a variable or method

Declarations and Definitions

What is the difference?

What are they?

C# Types

Enums

Structures

Literals

Literals and default types

Predefined Types in the .NET library

List class - Working with lists of objects

object

string

Boolean Type

bool

Character Type

char

Numeric Types

Floating-point Types

approximation errors

not all real numbers can be represented precisely

always signed

decimal (128 bit)

double (64 bit)

default floating-point type

float (32 bit)

Integral Types

Unsigned

ulong (64 bits)

uint (32 bits)

ushort (16 bits)

byte (8 bits)

Signed

long (64 bits)

int (32 bits)

default integral type

short (16 bits)

sbyte (8 bits)

Types in Programming Languages

Categories of Types

User-Defined Types

Enum

Stuct

Value type

Classes

Reference type

The types defined by the program itself

Predefined Types

User-defined types that are defined in the framework & libraries the program is using

Primitive Types

Boolean type

Character types

Numeric types

Types defined by the programming language

Memory Management with Types

Heap Memory

Reference types

Stack Memory

Value types

What are types?

Type Safety

Dynamic type checking

Static type checking

Types used in functions / methods

Types for variables

Foundations of Interactive Applications Programming
Developing in Teams

Forking repositories

Branching Code

Feature branches

Merging branches

How

When

Code Management Workflows

Integration-manager workflow

Centralized workflow

Colaborating in teams

Sync

Pull

Fetch

Push

Commit

Managing Versions and Merging Conflicts

Merging conflicts

Viewing History of Commits

By project

By file

Viewing Changes

Remote Repositories with GitHub

Synching a local repository with a remote one

Pushing changes (commits)

Pulling changes (commits)

Cloning a remote repository locally

Publishing local repository remotely

Create remote repository

Introduction to GIT

Commiting changes

Creating code repositories

Adding a project to source control

Distributed Version Control Systems

Management of Code

Version Control

Code Storage

Code Integration

Platforms for Interactive Apps

.NET Assemblies

Module assemblies

Statically linked libraries

Class library assemblies

Dynamically linked libraries

Executable assemblies

Compilation process in .NET

Compilation to native code

Intermediate Language

.NET Framework for GUI Development

MAUI Apps

XAML UI / Universal Apps

Displaying a message with string interpolation

XAML Designer and Properties

OS Support via XAML Components

WPF

Windows Forms

Displaying a message with string formatting

File Structure

Code (behind)

form.cs file

Graphical Layout

Event Handlers

Properties

form.designer.cs source file

Visual Studio Designer View

OS Support via Win32 Graphical Components

MAUI Architecture

.NET Framework Evolution

WinUI 3

.NET 5+

Windows 8, 8.1, 10

3.0/3.5

2.0

Overview of the .NET framework

.NET Framework Building Blocks

Framework Class Libraries

Commong Language Runtime

Four components of the interoperability standard

What is language interoperability and how is it achieved

What is .NET and what isn't?

C# Console Program: Hello World

Program class

Main method

Entry Point

Top Level Statements

Meta Files

Solution File

Project File

Resources

...

Styles

Fonts

Images

App Lifecycle

Stopped

Deactivated

Running

Not Running

Architecture of MAUI Apps

Communication between these architectural significant classes

Page

Page Caching

Navigation Implementation

AppShell

Window Class

App

MauiProgram

Purpose

Platform Program class and the Main() method

Interactive Applications

Multi-Platform Applications

Windows

macOS

Android

iOS

Universal Applications

Characteristics

Outputs

Inputs

Gaming Inputs

Mobile Inputs

Standard Inputs

Mobility

Adaptable UI

Universal UI Design

Types of Programs

Server (Remote) Programs

Client (Local) Programs

Evolution in Computing

Types of User Interfaces

Web

multi-user

dependent on other programs

server (remote side)

browser (client side)

local and remote components

request / response

graphical

GUI

single or multi-user

user driven

non-sequential flow

graphical UI

Console

typically single user

local

stand-alone

application driven

sequential flow

text based UI

User Interfaces

Output

Input

Absolute Fundamentals Review
Debugging

Debugging Windows

Debugging Commands

Debugging Workflow

Stop Debugging

Step-By-Step Execution

Inspect Data (Post)

Inspect Flow

Execute Line

Inspect Data (Pre)

Breakpoint

Start Debugging

Add Breakpoints

Types of assumptions

Input/Output

Program Flow

Data

Development Methodology

Test to verify the program

Implement program features incrementally, feature by feature

Debug to validate your assumptions

Code the feature

Define accessor and mutator methods as needed

Define all constructors

Declare all field variables

Declare all classes

Software Design Principles

Software Reuse

Stepwise Refinement

Separation of Concerns

UML Thinking Maps

Sequence Diagrams

Class Diagrams

Class Relationships

IS-A

HAS-A

USES

Code

UML Symbol

UML name