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

Slides:



Advertisements
Similar presentations
CSCI 330: Programming Language Concepts Instructor: Pranava K. Jha Control Flow-II: Execution Order.
Advertisements

Component 4: Introduction to Information and Computer Science Unit 5: Overview of Programming Languages, Including Basic Programming Concepts Lecture 1.
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
Chapter 1: An Overview of Computers and Programming Languages
LECTURE 1 CMSC 201. Overview Goal: Problem solving and algorithm development. Learn to program in Python. Algorithm - a set of unambiguous and ordered.
Engineering Problem Solving With C++ An Object Based Approach Fundamental Concepts Chapter 1 Engineering Problem Solving.
A breakthrough year in robot theatre? Henrik IbsenHenrik Ibsen in "Heddatron," the dopey and strangely moving gloss on "Hedda Gabler" by Les Freres.
Chapter Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing Describe.
1 Engineering Problem Solving With C++ An Object Based Approach Fundamental Concepts Chapter 1 Engineering Problem Solving.
Computer Concepts 5th Edition Parsons/Oja Page 546 CHAPTER 11 Software Engineering Section A PARSONS/OJA Computer Programming.
Computer Science 1620 Accumulators. Recall the solution to our financial program: #include using namespace std; int main() { double balance = ;
Reasons to study concepts of PL
Control Structures. Hierarchical Statement Structure Standard in imperative languages since Algol60. Exceptions: Early FORTRAN, COBOL, early BASIC, APL.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 1: An Overview of Computers and Programming Languages C++ Programming:
COMP1170 Midterm Preparation (March 17 th 2009) Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 1: An Overview of Computers and Programming Languages Updated by: Dr\Ali-Alnajjar.
Introduction to Programming (in C++) Introduction Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Chapter 1 The Big Picture Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing.
Announcements — Tues., Jan. 19 For next time, read Learning Computing with Robots, chs. 1 and 2. The Blackboard site is up and operational! not much content.
CS 415: Programming Languages Chapter 1 Aaron Bloomfield Fall 2005.
Chapter 01 Nell Dale & John Lewis.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Computer Programming and Basic Software Engineering 4. Basic Software Engineering 1 Writing a Good Program 4. Basic Software Engineering.
History of Programming Languages
Programming Languages CPS120: Introduction to Computer Science Lecture 5.
High-Level Programming Languages: C++
CS2303 C14 Systems Programming Concepts Bob Kinicki.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming 1.
Hello World 2 What does all that mean?.
Chapter 1: A First Program Using C#. Programming Computer program – A set of instructions that tells a computer what to do – Also called software Software.
CS161 Topic #21 CS161 Introduction to Computer Science Topic #2.
©Xiaoying Gao, Peter Andreae First Java Program COMP 102 #2 2014T2 Xiaoying Sharon Gao Computer Science Victoria University of Wellington.
Facial Expressions of Android Robots. Maria Curie-Sklodowska.
Chapter 1 The Big Picture.
CS1Q Computer Systems Lecture 14 Simon Gay. Lecture 14CS1Q Computer Systems - Simon Gay2 Where we are Global computing: the Internet Networks and distributed.
 Programming Languages  First Generation Languages (Machine Language)  We Actually have to do a few things. First we have to find the operating code,
Cosc 2150: Computer Organization
Revision Language generations Two’s and One’s Complement and Sign and Magnitude.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 13: An Introduction to C++
Chapter 1 Introduction to Computers and C++ Programming Goals: To introduce the fundamental hardware and software components of a computer system To introduce.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 1- 1 October 20, October 20, 2015October 20, 2015October 20,
The Teacher Computing Computer Languages [Computing]
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 1: An Overview of Computers and Programming Languages.
Geog Basic Skills in Scientific Programming Syllabus, Introduction, Fundamentals of IDL Syntax.
C++ Lecture 1 Friday, 4 July History of C++ l Built on top of C l C was developed in early 70s from B and BCPL l Object oriented programming paradigm.
Chapter 1 Computers, Compilers, & Unix. Overview u Computer hardware u Unix u Computer Languages u Compilers.
Programming Languages
int k = Integer.MAX_VALUE; k++; int k = Integer.MAX_VALUE; k++; What happens when the following code executes? byte b = someFile.readByte(); b = (byte)(b.
Chapter 11  Getting ready to program  Hardware Model  Software Model  Programming Languages  Facts about C++  Program Development Process  The Hello-world.
CSIS 113A Lecture 5 Functions. Introduction to Functions  Building Blocks of Programs  Other terminology in other languages:  Procedures, subprograms,
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
Software Engineering Algorithms, Compilers, & Lifecycle.
Victoria Ibarra Mat:  Generally, Computer hardware is divided into four main functional areas. These are:  Input devices Input devices  Output.
Programming Language Paradigms ITSK2314 Lecture 3.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
Chapter 1: An Overview of Computers and Programming Languages
Introduction to programming languages, Algorithms & flowcharts
Why study programming languages?
Engineering Problem Solving With C An Object Based Approach
Computer Programming (BCT 1113)
Introduction to programming languages, Algorithms & flowcharts
Chapter 1: An Overview of Computers and Programming Languages
Chapter 1: An Overview of Computers and Programming Languages
C++ Programming: From Problem Analysis to Program Design
Introduction to programming languages, Algorithms & flowcharts
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Ada – 1983 History’s largest design effort
Chapter 1: An Overview of Computers and Programming Languages
Chapter 1: An Overview of Computers and Programming Languages
Presentation transcript:

Digital Design versus Computer Programming How to learn and be successful IMPORTANCE 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 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 IN MACHINE LANGUAGE TEACHES YOU ABOUT REGISTERS TEACHES YOU ABOUT REGISTERS AND COMPUTER ORGANIZATION

Assembly language Human-readable version of machine language, e.g. … In programming terms: Again, not exactly inspiring dreams of teaching students = move al, 0x61 > BUT assembly level programming teaches you 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 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 language for your task

History of the Comp Science programming 1984 – 1998 = Pascal 1999 – 2003 = C = 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++

Now I am old and I have 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, Python and Robotics > Scheme, Lisp and Robotics

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.

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.

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

OUR RECENT BIPED THEATRE KHR-1iSOBOT Lynxmotion Systems New version of Hahoe To 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 robots

iSOBOT robot

The stage of Portland Cyber Theatre in FAB building

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

Conclusions It teaches very useful skills Practical project is an important component of this class You cannot avoid using computers and programming when you are an engineer It teaches group work and 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 RavenHer own robot design Chu Tiffany and Crystal Epinger Digital lock Clor Josh, Jacquot Joshua and Morehouse Brandon Fan System Dhawan SidharthQuantum Circuit Synthesis Heisterkamp Cory, Penny Dustin,Climate Control Owens HughReversible Circuits Saelee Torn and Thao GeorgeFibonacci Sequence Tsai EdisonSudoku Computer Wolfe DevinBinary Calculator simulation Cross MatthewArm/hand design for a humanoid robot Yushi WangClifford Algebra in Quantum Circuits Projects in 2010 Summer class