CSCI 2133 Rapid Programming Techniques for Innovation Week 1 - - PowerPoint PPT Presentation

csci 2133 rapid programming techniques for innovation
SMART_READER_LITE
LIVE PREVIEW

CSCI 2133 Rapid Programming Techniques for Innovation Week 1 - - PowerPoint PPT Presentation

CSCI 2133 Rapid Programming Techniques for Innovation Week 1 About Course Projects CSCI 2133 2 Previous Lecture Course Introduction logistics and administrivia textbook and main references course calendar overview


slide-1
SLIDE 1

CSCI 2133

CSCI 2133 – Rapid Programming Techniques for Innovation

Week 1 – About Course Projects

slide-2
SLIDE 2

CSCI 2133

Previous Lecture

  • Course Introduction

– logistics and administrivia – textbook and main references – course calendar overview – evaluation scheme – academic integrity policy – culture of respect policy – tentative course schedule

  • Course content overview

2

slide-3
SLIDE 3

CSCI 2133

Course Project

  • A simulation of practical software development,

particularly in a start-up environment; this means: – building a substantial and useful system – working in a team – having (hopefully) real users

  • Building a complete three-tier system
  • 1. User interface (presentation tier)
  • 2. Processing logic (“business” logic, control tier)
  • 3. Database (persistent data, data access tier)
  • Related but different than Model-View-Controller design

pattern

3

slide-4
SLIDE 4

CSCI 2133

How to Choose a Project Topic?

  • Look at the examples of existing systems
  • Find something interesting to you
  • Define appropriate scope
  • Join a team in the process

4

slide-5
SLIDE 5

CSCI 2133

Look at the Existing Systems

  • There are many examples of web applications

and services: – Google, Facebook, Twitter, Amazon, Instagram, LinkedIn, . .. – email, chat, search, collaboration, maps, mobile apps, . .. – standalone applications are okay, but may be challenging to recruit beta testers

  • Y
  • u should aim at something of this form, but

much simpler and feasible for a term project

5

slide-6
SLIDE 6

CSCI 2133

Find Interesting Topic to you

  • The application should be useful to you, to start with
  • A quote by Paul Graham, co-founder of Y Combinator

(www.paulgraham.com): “The way to get startup ideas is not to think of startup

  • ideas. It’s to look for problems, preferably problems you

have yourself. The very best startup ideas tend to have three things in common: they’re something the founders themselves want, that they themselves can build, and that few others realize are worth doing. . .

6

slide-7
SLIDE 7

CSCI 2133

Define Appropriate Scope

  • By the end of term (probably sooner), you need to have

an MVP (Minimal Viable Product)

  • A term does not give much time, and you have other

courses, so your product must be much simpler than popular examples

7

slide-8
SLIDE 8

CSCI 2133

Join a Team

  • You need to be a part of a team
  • Team size: 2–5; ideally 3–4
  • After the teams and project topics are finalized (by the

beginning of February), the use of SVN or git will be required for team work and to keep instructor in the loop

  • TAs will have regular meetings with the teams in the

second part of the term.

8

slide-9
SLIDE 9

CSCI 2133

An Example

  • A typical news app

9

slide-10
SLIDE 10

CSCI 2133

Question

  • Can you tell how you sketch your idea/Low fidelity

prototype?

  • What is the fastest tool of prototyping?

10

slide-11
SLIDE 11

CSCI 2133

Invision

  • https://www.invisionapp.com/signup/udacity

11

slide-12
SLIDE 12

CSCI 2133

Preparing Design Document (P0)

  • Design Document (P0) is due on Feb 2
  • Think about different ideas and form a group before
  • Check your idea with instructor before (via email, or in a

short meeting)

  • P0 should be about 3–4 pages long document
  • Initial project web page, project overview, title, members,

elevator speech

  • Propose initial architecture overview and design choices
  • Propose project milestones
  • Include project risks and mitigation ideas
Detailed Technical Design Your project title AMS Coordinator Architect Analyst ***** ***** *****
slide-13
SLIDE 13

CSCI 2133

Presenting Strong Case for Your Project

Different approaches to think about your project:

  • 1. Elevator speech: How would you make a case for your project to an

investor during 60min elevator ride

  • 2. 1-page ad: what would you put there; what information you would

put on your landing web page

  • 3. 5–7 slides for a 5–10min presentation of the project
  • 4. Demo: what case scenarios you would include in a short demo to a

client

  • 5. Business plan: value proposition, competitive environment, revenue

model and similar

  • 6. Job interview: how would you talk about the project to a potential

employer 1 3

slide-14
SLIDE 14

CSCI 2133

Planning Process of System Development

  • One choice is the classic Waterfall model:

Requirements, Design, Implementation, Testing, Maintenance

  • or, closer to the industrial practice:

Specifications Requirements Architectural design Detailed design Coding Integration Testing Delivery

1 4

slide-15
SLIDE 15

CSCI 2133

Quick Overview of SDLCs

Credit to article of Existek ek (Full-cycle software development company)

  • Waterfall SDLC Model
  • Iterative SDLC Model
  • Spiral SDLC Model (Rapid Prototype Model)
  • Agile SDLC Model

https://medium.com/existek/sdlc-models-explained-agile-waterfall-v-shaped-iterative-spiral-e3f012f390c5 15

slide-16
SLIDE 16

CSCI 2133

Waterfall Model

16

slide-17
SLIDE 17

CSCI 2133

17

slide-18
SLIDE 18

CSCI 2133

Iterative Model

18

slide-19
SLIDE 19

CSCI 2133

19

slide-20
SLIDE 20

CSCI 2133

Spiral SDLC Model

20

slide-21
SLIDE 21

CSCI 2133

21

slide-22
SLIDE 22

CSCI 2133

Agile

22

slide-23
SLIDE 23

CSCI 2133

23

slide-24
SLIDE 24

CSCI 2133

Which Development Process to Use?

  • Waterfall Model is overkill and not completely appropriate

– follows the “big bang” model ofdevelopment

  • Rapid Prototype Model is more appropriate
  • However, do no make it a rapid “hacking” model
  • Have a clear plan to try to make clear steps forward
  • Keep a log with completed tasks, and what to do next
  • Keep iterating working prototype, and after each iteration

be able to declare success and walk away

2 4

slide-25
SLIDE 25

CSCI 2133

Question

  • What development process will you adopt to your

project?

25

slide-26
SLIDE 26

CSCI 2133

26

slide-27
SLIDE 27

CSCI 2133

A Less Formal Approach to Development Process

  • Conceptual design

– general description, sketches, scenarios, screenshots, rough diagrams

  • Requirements Specification (“what”)

– precise ideas and requirements; understanding that once requirements are set it will be costly to change them

  • Architectural Design (“how”)

– overall structure diagrams: components and connections, subsystems, interactions and interfaces, languages, systems, connectivity, data availability

  • Implementation (“what by when”)

– make prototype and iterate, get real users asap, prepare tests as you go 2 7

slide-28
SLIDE 28

CSCI 2133

Interfaces

  • Interfaces are defined at the boundaries of system

components

  • Contracts about format of inputs and outputs and

semantics

  • Interfaces hide implementation: implementation of one

component can be changed without affecting the rest of the system

  • Examples: change database, change user interface

2 8

slide-29
SLIDE 29

CSCI 2133

Design Choice Examples

  • user interface

– browser, desktop, phone, game console, API, mobile . . . – HTML/CSS/LESS, Javascript, Flash, Jquery, Bootstrap, Swing, . ..

  • languages

– C, Java, C++, PHP , Python, Perl, Javascript, Ruby, Objective C, C# . . .

  • server

– bluenose, own machine, Google App Engine, Amazon AWS, Heroku, . ..

  • database

– MySQL, SQLite, Postgres, MongoDB, Redis, plain files, . ..

  • information exchange formats

– custom text format, JSON, XML, REST, . ..

  • frameworks

– Django, Flask, Rails, Express, Google Web Toolkit, . ..

  • development environments

– JetBrain, emacs, Eclipse, XCode, Visual Studio, . ..

2 9

slide-30
SLIDE 30

CSCI 2133

“Make versus buy” Choice

  • You can use components and code from other systems;

such as open source

  • Overall project design must be yours and majority of the

implementaion work

  • Components from other parties must be clearly

described in the documentation at the end

  • It is okay to in large part re-implement an existing

system, but there should inevitably be some original ideas about your system when compared to an existing system

3

slide-31
SLIDE 31

CSCI 2133

Some Relevant Topics and Tools

  • Tier 1: User Interface

– Standalone app – Web client: HTML, CSS, JavaScript, Flash, . ..

  • Interface Tier 1 ⇔

Tier 2; “Wire” format – formatted text, JSON, REST, XML, SOAP , . ..

  • Tier 2: Business logic

– Java, Python, PHP , Perl, Ruby, Node.js, C++, C, Objective-C, Go,

  • . ..
  • Interface Tier 2 ⇔

Tier 3; “Plumbing” – TCP/IP , authentication, . ..

  • Tier 3: Databases; Persistent data

– MySQL, SQLite, Postgres, MongoDB, Redis, flat files, . ..

  • Server solutions

– own server, bluenose, cloud solutions, AWS, Heroku, Google App Engine, . .. 3 1

slide-32
SLIDE 32

CSCI 2133

Some Relevant Topics and Tools (2)

  • Toolkits

– NodeJs, jQuery, Dojo, YUI, . ..

  • GUI tools

– Swing, TkInter (Python), jQueryUI, Bootstrap, Angular, . ..

  • Web frameworks

– GWT, Django, Flask, Zend, Rails, Cocoa, Express, . ..

  • Development Environment

– shell and tools (emacs, make, . . . ), Eclipse, Xcode, . . .

  • Repository

– Github, SVN, Git, Mercurial, Bazaar, . . . 3 2

slide-33
SLIDE 33

CSCI 2133

Background Knowledge and Skills

  • Java and C programming language

3 3

slide-34
SLIDE 34

CSCI 2133

Background Knowledge and Skills

  • Java and C programming language

– different ways to develop and compile (shell, emacs, Eclipse, JGrasp, . . . )

3 4

slide-35
SLIDE 35

CSCI 2133

Background Knowledge and Skills

  • Java and C programming language

– different ways to develop and compile (shell, emacs, Eclipse, JGrasp, . . . )

  • Comfortable with Linux command line

– a.k.a., CLI — Command Line Interface – Login to the bluenose server (blusenose.cs.dal.ca) – work with a shell, e.g., bash, basic Unix commands – file system commands (cd, ls, mkdir, chmod, chown, . . . ) – C compilation: gcc – Java compilation and execution: javac, java – basic use of make, maybe svn?, even git? – use of regular expressions (to be refreshed) – other: learn touch typing 3 5

slide-36
SLIDE 36

CSCI 2133

Windows Environments

  • Install MinGW
  • MinGW was originally called mingw32 (Minimalist GNU for

W32), following the GNU convention whereby Windows is shortened as "W32".[4][5] The numbers were dropped in order to avoid the implication that it would be limited to producing 32-bit binaries. Colin Peters authored the initial release in 1998, consisting only of a Cygwin port of GCC.[6][7] Jan-Jaap van der Heijden created a Windows-native port of GCC and added binutils and make.[6][7] Mumit Khan later took over development, adding more Windows-specific features to the package, including the Windows system headers by Anders Norlander.[6][7] In 2000, the project was moved to SourceForge in order to solicit more assistance from the community and centralize its development.[6][7]

  • credited to wikipedia https://en.wikipedia.org/wiki/MinGW

36

slide-37
SLIDE 37

CSCI 2133

Linux Environment

  • Much easier
  • Login Dalhousie bluenose server.
  • Use VI/VIM/EMACS editors.
  • Compile file with javac/g++/gcc command.

37

slide-38
SLIDE 38

CSCI 2133

Hello World Example

  • C++:
  • g++ helloworld.cpp -o helloworld.exe
  • C:
  • gcc -o helloworld1 helloworld.c
  • Java
  • Javac helloworld.java
  • Java HelloWorld

38

slide-39
SLIDE 39

CSCI 2133