Problem Solving.

Slides:



Advertisements
Similar presentations
Gerardo Schneider Department of Informatics University of Oslo December 2008.
Advertisements

CS105 INTRODUCTION TO COMPUTER CONCEPTS INTRO TO PROGRAMMING Instructor: Cuong (Charlie) Pham.
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall 1.
The Analytical Engine Module 6 Program Translation.
CS 104 Introduction to Computer Science and Graphics Problems Software and Programming Language (2) Programming Languages 09/26/2008 Yang Song (Prepared.
Computer Systems Nat 4/5 Computing Science Translator Programs.
CS 331, Principles of Programming Languages Introduction.
CS 415: Programming Languages Chapter 1 Aaron Bloomfield Fall 2005.
Programming Languages Lecture 12. What is Programming?  The process of telling the computer what to do  Also known as coding.
History of Programming Languages
Programming Languages – Coding schemes used to write both systems and application software A programming language is an abstraction mechanism. It enables.
Introduction to Programming Language CS105 Programming Language First-generation: Machine language Second-generation: Assembly language Third-generation:
Intro. to Game Programming Want to program a game?
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
CS2303 C14 Systems Programming Concepts Bob Kinicki.
Chapter 1. Introduction.
Programming Language Rico Yu. Levels of Programming Languages 1.Low level languages 2.High level languages.
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
©Xiaoying Gao, Peter Andreae First Java Program COMP 102 #2 2014T2 Xiaoying Sharon Gao Computer Science Victoria University of Wellington.
First Java Program COMP 102 #2 2015T2 Xiaoying Sharon Gao Computer Science Victoria University of Wellington.
February 25, ICE 1341 – Programming Languages (Lecture #1) In-Young Ko Programming Languages (ICE 1341) Lecture #1 Programming Languages (ICE 1341)
Programming History. Who was the first programmer?
CS 331, Principles of Programming Languages Chapter 1.
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.
Skill Area 311 Part B. Lecture Overview Assembly Code Assembler Format of Assembly Code Advantages Assembly Code Disadvantages Assembly Code High-Level.
CS 2303 Systems Programming Concepts Bob Kinicki A08.
Programming Language Theory 2014, 1 Chapter 1 :: Introduction Origin : Michael L. Scott School of Computer & Information Engineering,
Software Engineering Algorithms, Compilers, & Lifecycle.
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. Introduction.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
The language focusses on ease of use
Concepts of Programming Languages
Introduction to programming languages, Algorithms & flowcharts
Programming Languages
Why study programming languages?
C Programming.
Introduction to programming languages, Algorithms & flowcharts
PROGRAMMING LANGUAGES
CSCI-235 Micro-Computer Applications
Problem Solving Using C: Orientation & Lecture 1
CS101 Introduction to Computing Lecture 19 Programming Languages
课程名 编译原理 Compiling Techniques
Objectives Overview Differentiate between machine and assembly languages Identify and discuss the purpose of procedural programming languages, and describe.
Programming Languages and Translators
Introduction to programming languages, Algorithms & flowcharts
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Problem Solving Using C: Orientation & Lecture 1
C Programming.
Programming Language Design
CSE 341 Programming Languages Autumn 2001
CSE 341 Programming Languages Autumn 2003
CS105 Introduction to Computer Concepts Intro to programming
CSE 341 Programming Languages Autumn 2002
CSE 341 Programming Languages Spring 2003
Problem Solving Using C: Orientation & Lecture 1
and Program Development
Principles of Programming Languages
Overview of Programming Paradigms
Lecture 8 Programming Paradigm & Languages. Programming Languages The process of telling the computer what to do Also known as coding.
CSE 341 Programming Languages Autumn 2003
CS100J CS100M is in Kimball Bll.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
School of Computer & Information Engineering,
Dept. of Computer & Information Sciences (Course Introduction)
C Programming.
CS105 Introduction to Computer Concepts Intro to programming
Presentation transcript:

Problem Solving

Introduction Instructor: Joonwon Lee 031-299-4592 joonwon@skku.edu 산학협력관 5층 85572 Homepage: http://csl.skku.edu/SSE2025S18/Overview

Course Objectives Introduce various subjects in computer science through puzzles and problems Most problems came from ICPC The ACM-ICPC International Collegiate Programming Contest

Course Elements 14 Lectures (once every week) (5%) 10 Programming Labs (25%) 3 Individual Programming Homework Assignments (30%) Final Exam (40%) Most questions will be based on labs and assignments Programming

Textbook Programming Challenges by Steven S. Skiena and Miguel A. Revilla – Springer can be download from the SKKU library

Course Rules (1/2) cheating in exams late homework will receive an “F” for the course late homework 10% penalty per day cheating on homework machine check will receive a “0” point, most probably, “F”grade

Course Outline

Problem Solving Using C Basic Software Engineering Programming Patterns Problem Solving Techniques Practice

What You Need to Solve a Problem by Programming Programming Language Skills Correct rules Identifying rule violations Programming Skills Training on programming patterns Training on software engineering methods Problem Solving Skills Logical thinking

Programming Programming Is To Use the “Dumb” Computer To Solve a Problem That A Human Cannot Solve Fast Enough. The Computer Needs “Very Very Very” Precise and Detailed Instructions. The Instructions Must Be in a Programming Language, Not a Natural Language.

Natural Language What is 27.2 times 13.8 ?

Programming Languages Machine Languages Assembly Languages High-Level Languages

Machine Language 000000 00001 00010 00110 00000 100000 Add the registers 1 and 2 and place the result in register 6 100011 00011 01000 00000 00001 000100 Load a value into register 8, taken from the memory cell 68 after the location listed in register 3: 000010 00000 00000 00000 00100 000000 Jump to the memory address 1024:

Assembly Language MOV r0, #0C LOAD: MOV r1,(r0) load base address of string into r0 LOAD: MOV r1,(r0) load contents into r1 CALL PRINT call a print routine to print the character in r1 INC r0 point to the next character JMP LOAD load next character

High-Level Language float length, width, area; length = 27.2; area = length * width;

High-Level Programming Languages Over 500 Languages (http://en.wikipedia.org/wiki/List_of_programming_languages_by_category) Basic, FORTRAN, COBOL, RPG (Algol, Pascal, PL/1), C C++, C#, Java (ADA, Smalltalk, Eiffel) Perl, TCL, Java Script, PHP, Python, Ruby SNOBOL, LISP, (Scheme) MATLAB, (APL) Shell, Awk, REXX SQL, (Prolog), XML, Xquery, XSLT, Postscript, OWL 4GL UML Verilog, VHDL

Executing Programs Compile Assemble Interpret Converting programs written in a high-level language into an assembly language or a pseudo code Assemble Converting programs written in an assembly language into a machine language Interpret Running programs written in a high-level language without compiling (one instruction at a time)

Programming Languages Different Languages Are Designed To Serve Different Purposes Better. LISP for list processing, and AI Python for fast implementation SQL, PHP for database applications C++, Java for object-oriented software development C for most modern enterprise/scientific applications

Problem Solving by Programming Programming Is Translating very very precise instructions in some natural language (e.g., Korean, English,…) into some programming language (e.g., C, Java,…) to solve a problem that a human cannot solve easily. So, Before You Program, You Need Very Very Precise Instructions on “How To” Solve the Problem. You need a “design”. Before You Know “How To” Solve the Problem, You Need To Know Precisely What The Problem Is (“What To Do”). You need to understand the requirements.

Problem Solving by Programming: Steps (1) Understand In Precise Detail “What the Problem Is”. Requirements Analysis (Document) (2) Understand Precisely “How To Solve the Problem”. Basic Design (Document) (3) For Each Way, Write Down Very Precise and Detailed Instructions (in Korean or English, and Using Diagrams) On “How To Solve the Problem”. Detailed Design (Document) (4) Choose the “Best” Way. (5) Translate the Instructions Into a C Program. Coding (Programming, Implementation) (Document) (6) Test (Validate, Verify) the C Program Test Cases (Document)