digital design versus computer programming how to learn and be successful importance of projects in...

27
Digital Design Digital Design versus versus Computer Computer Programming Programming How to learn and be successful How to learn and be successful IMPORTANCE OF PROJECTS IN THIS CLASS IMPORTANCE OF PROJECTS IN THIS CLASS

Post on 19-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Digital Design versus Digital Design versus

Computer Computer ProgrammingProgramming

How to learn and be successfulHow to learn and be successful

IMPORTANCE OF PROJECTS IN THIS CLASSIMPORTANCE OF PROJECTS IN THIS CLASS

= Boo!

>When I was young life of a student was really tough

I had to program in machine language

Machine language• 01000010 01101111 01101111

00100001

• Specific to each machine, although often overlaps (e.g., all PCs read it the same way)

• First coded on punch cards

• I had to check each card that the holes were really punched – see the election problem.

= Boo!

>

BUT PROGRAMMINGBUT PROGRAMMING IN MACHINE LANGUAGEIN MACHINE LANGUAGE

TEACHES YOU ABOUT REGISTERSTEACHES YOU ABOUT REGISTERSAND COMPUTER ORGANIZATIONAND COMPUTER ORGANIZATION

Assembly language• Human-readable version of machine language,

e.g. …

• In programming terms: 10110000 01100001

• Again, not exactly inspiring dreams of teaching students

= move al, 0x61

>BUT assembly level programming teaches BUT assembly level programming teaches you about register transfersyou about register transfers

High-level languages• “high” = more abstract (removed) from machine language

• More truly human-readable:

IDENTIFICATION DIVISION.PROGRAM-ID.

HELLO-WORLD. * ENVIRONMENT DIVISION. * DATA DIVISION. *PROCEDURE DIVISION. PARA-1.

DISPLAY "Hello, world.".*

EXIT PROGRAM.END PROGRAM HELLO-WORLD.

• Use of compiler to generate machine code>

Programming in high level languages makes you more efficient and allows you to achieve the task faster but separates you from hardware

Examples of early high-level languages:

– ALGOL– APL– BASIC– COBOL– FORTRAN– Lisp– PL/I– RPG

>

What is the best way to learn programming?

Complaints:

"The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence."

- Edsger Dijkstra,

“How Do We Tell Truths That Might Hurt?” >

Thankfully, we have lots of choices

>

Side-by-side comparison#include <iostream>using namespace std;

int main(){

int num = 0;int numSquared = 0;

cout << "I will square a number\n"; cout << "Please type a number to be squared: "; cin >> num;

numSquared = num * num;

cout << "\nThe square of this num is "; cout << numSquared; cout << "\n\nPlease hit any key to exit"; cin >> num;

return 0;}

public class SquareThis{ public double SquareThis(int someNum) { int answer; answer = someNum * someNum; return answer; } }

C++ Java >

…by side comparison(define

(square-this some-number)

(* some-number some-number)

)

(square-this 3 5)

to JB

when [switch1] [ab, thatway setpower 4 onfor 40]

when [switch2] [ab, thisway setpower 4 onfor 40]

launch [loop [if switch3 [c, thisway on ] if not switch3 [c, thatway on ]]]

end

Scheme

>Yellow Brick Logo

You should select a good You should select a good language for your tasklanguage for your task

History of the Comp Science programming

• 1984 – 1998 = Pascal

• 1999 – 2003 = C++

• 2004 - = Java

“THE computer science language of

the 1970s” !

>

You should select a good You should select a good language to learn the language to learn the

concepts rather than syntax concepts rather than syntax only. Java and Lisp are better only. Java and Lisp are better

than C++than C++

Now I am old and I Now I am old and I have experiencehave experience

And my advise is…….

You should learn digital design by examples…….

You should learn programming by examples…….

You should build practical systems, never learn from book only …….

RobotC, RobotC, Python and Python and

RoboticsRobotics

>

Scheme , Scheme , Lisp and Lisp and RoboticsRobotics

VerilogVerilog

>

VHDLVHDLProgramming in VHDL or Verilog is more like hardware design than software design. On the other hand you get experience with programming environment, compilers, editors etc.

You should start programming and designing You should start programming and designing digital circuits when you are young, in a digital circuits when you are young, in a

middle school or high schoolmiddle school or high school

a debate between Einstein and Schroedinger Cat about quantum mechanics – an educational theatre.

Improvisational Theatre “What’s That? SchrImprovisational Theatre “What’s That? Schröödinger Cat”dinger Cat”

Professor EinsteinProfessor EinsteinSchrSchröödinger Cat dinger Cat

2010 - 2010 - OUR OUR RECENT RECENT

BIPED THEATREBIPED THEATRE

KHR-1KHR-1iSOBOTiSOBOT

Lynxmotion SystemsLynxmotion Systems

New version of HahoeNew version of HahoeTo be shown in 2010To be shown in 2010

• Walking biped robot can express the fullness of human emotions:– body gestures, – dancing, – jumping, – gesticulating with

hands.

• Emotions can be:– Emergent - Arushi– Programmed –

Martin Lukac ISMVL

– Mimicked – ULSI– Learned – Martin

Lukac Reed-Muller Fighting KHR-1 robotsFighting KHR-1 robots

iSOBOT robotiSOBOT robot

The stage The stage of of Portland Portland Cyber Cyber Theatre in Theatre in FAB FAB buildingbuilding

Marie Curie Marie Curie

EmotionEmotional Robot al Robot

Head Head You can work on You can work on these or other these or other robots…..robots…..

Conclusions Conclusions

It teaches very useful It teaches very useful skillsskills

Practical project is an Practical project is an important component of important component of

this classthis class

You cannot avoid using You cannot avoid using computers and computers and

programming when you programming when you are an engineerare an engineer

It teaches group work It teaches group work and design verificationand design verification

What can you learn in 171 projects

1. Programming in Verilog or VHDL

2. Programming in Java, C++ or RobotC, related to hardware and robot design, in practical environment.

3. Building a digital circuit using FPGAs or PLDs.

4. Practically learning about interfacing and simple analog/digital circuits, motors, lights, etc.

5. Simulating digital circuits.

6. Designing conceptual digital systems, such as Sudoku Machine, or logic minimization machine.

Allan Raven Her own robot design

Chu Tiffany and Crystal Epinger Digital lock

Clor Josh , Jacquot Joshua and Morehouse Brandon

Fan System

Dhawan Sidharth Quantum Circuit Synthesis

Heisterkamp Cory, Penny Dustin, Climate Control

Owens Hugh Reversible Circuits

Saelee Torn and Thao George Fibonacci Sequence

Tsai Edison Sudoku Computer

Wolfe Devin Binary Calculator simulation

Cross Matthew Arm/hand design for a humanoid robot

Yushi Wang Clifford Algebra in Quantum Circuits

Projects in 2010 Summer classProjects in 2010 Summer class