1 / 27

Digital Design versus Computer Programming

Digital Design versus Computer Programming. IMPORTANCE OF PROJECTS IN THIS CLASS. How to learn and be successful. = 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

glen
Download Presentation

Digital Design versus Computer Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. = Boo! When I was young life of a student was really tough >

  3. 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 PROGRAMMING IN MACHINE LANGUAGE TEACHES YOU ABOUT REGISTERS AND COMPUTER ORGANIZATION >

  4. 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 you about register transfers >

  5. 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 >

  6. Examples of early high-level languages: • ALGOL • APL • BASIC • COBOL • FORTRAN • Lisp • PL/I • RPG >

  7. 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?” >

  8. Thankfully, we have lots of choices >

  9. #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; } } Side-by-side comparison > Java C++

  10. (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 …by side comparison Scheme You should select a good language for your task > Yellow Brick Logo

  11. 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 language to learn the concepts rather than syntax only. Java and Lisp are better than C++ >

  12. Now I am old and I have experience

  13. 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 …….

  14. RobotC, Python and Robotics Scheme , Lisp and Robotics >

  15. Verilog VHDL Programming 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. >

  16. You should start programming and designing digital circuits when you are young, in a middle school or high school a debate between Einstein and Schroedinger Cat about quantum mechanics – an educational theatre.

  17. Improvisational Theatre “What’s That? Schrödinger Cat” Schrödinger Cat Professor Einstein

  18. 2010 - OUR RECENT BIPED THEATRE New version of Hahoe To be shown in 2010 KHR-1 iSOBOT Lynxmotion Systems

  19. 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 robots

  20. iSOBOT robot

  21. The stage of Portland Cyber Theatre in FAB building

  22. Marie Curie Emotional Robot Head You can work on these or other robots…..

  23. Conclusions Practical project is an important component of this class It teaches very useful skills It teaches group work and design verification You cannot avoid using computers and programming when you are an engineer

  24. What can you learn in 171 projects • Programming in Verilog or VHDL • Programming in Java, C++ or RobotC, related to hardware and robot design, in practical environment. • Building a digital circuit using FPGAs or PLDs. • Practically learning about interfacing and simple analog/digital circuits, motors, lights, etc. • Simulating digital circuits. • Designing conceptual digital systems, such as Sudoku Machine, or logic minimization machine.

  25. Projects in 2010 Summer class

More Related