digital design versus computer programming how to learn and be successful importance of projects in...
Post on 19-Dec-2015
213 views
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
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
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?” >
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++
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
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