Educating Programmers: A Customer Perspective Alexander Stepanov A9.com Workshop on Quality Software: A Festschrift for Bjarne Stroustrup Texas A&M University,

Slides:



Advertisements
Similar presentations
Facilitating Efficacious Transfer of Database Knowledge and Skills Huda Al-Shuaily
Advertisements

Course Outline Presentation Term: F09 Faculty Name : Asma Sanam Larik Course Name :INTRO TO COMPUTING Course Code : CSE145 Section :1 Semester : 1.
Standards Alignment A study of alignment between state standards and the ACM K-12 Curriculum.
Which Course? Where Does Your City University Degree Lead? Dr. Sebastian Hunt Associate Dean.
1 Undergraduate Curriculum Revision Department of Computer Science February 10, 2010.
Mathematics in the MYP.
Teaching Courses in Scientific Computing 30 September 2010 Roger Bielefeld Director, Advanced Research Computing.
Graduate Expectations. Critical Thinking & Life Management. IBT graduates are expected to: identify and demonstrate the essential employability skills.
.NET MSc in Distributed Systems David Grey Rob Miles University of Hull, UK.
What Mathematics Knowledge is Needed for Teaching Mathematics?
Writing a Science or Engineering Paper: It is just a story Frank Shipman Department of Computer Science Texas A&M University.
COMP 3009 Introduction to AI Dr Eleni Mangina
Cody Clifton KU GSO/AWM joint meeting April 29, 2014.
1 College of Engineering and Computer Science Computer Science Department CSC 131 Computer Software Engineering Fall 2006 Lecture # 2 Chapter 6 & 7 System.
CMPD 434 MULTIMEDIA AUTHORING
Your Interactive Guide to the Digital World Discovering Computers 2012.
Do we need theoretical computer science in software engineering curriculum: an experience from Uni Novi Sad Bansko, August 28, 2013.
Teaching Fellow Admissions Tutor for Computer Science Director of Undergraduate Studies.
 A set of objectives or student learning outcomes for a course or a set of courses.  Specifies the set of concepts and skills that the student must.
TEMPUS JEP : TEACHING BUSINESS INFORMATION SYSTEMS CURRICULUM DEVELOPMENT Information Technology courses Second Project Meeting, Belgrade, January.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Introduction to Computer and Programming CS-101 Lecture 6 By : Lecturer : Omer Salih Dawood Department of Computer Science College of Arts and Science.
INFO101: Management Information Systems INFORMATION X.
Norm Kennedy SEA – February 11,  Math Trailblazers ◦ Comprehensive, K-5 mathematics curriculum with problem solving at its core ◦ Background 
Research in Computing Discipline Prabhas Chongstitvatana.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Nicole Paulson CCSSO Webinar March 21, 2012 Transition to the Common Core State Standards in Elementary Math.
Piedmont K-5 Math Adoption May 29, Overview What Elementary Math Looks Like Historical Perspective District Philosophy Process and Criteria Why.
IS 466 ADVANCED TOPICS IN INFORMATION SYSTEMS LECTURER : NOUF ALMUJALLY 22 – 10 – 2011 College Of Computer Science and Information, Information Systems.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
 CS 5380 Software Engineering. Course Description  This course will survey software engineering methods and processes, including requirements, architecture,
Dr Lisa Wise 9/08/2002 The Evolution and Devolution of the Webmaster Role Dr Lisa Wise.
Computer Science School of Computing Clemson University Introduction to Formal Specification Murali Sitaraman Clemson University.
Structure of Study Programmes Bachelor of Computer Science Bachelor of Information Technology Master of Computer Science Master of Information Technology.
Dr. Karl Abrahamson, Department Chair Dr. Amy Shannon, Academic Advisor.
3rd Country Training, K.Subieta: System Engineering and Databases. Lecture 3, Slide 1 February 20, 2004 Lecture 3: Introduction to Software Analysis and.
Computer Science 101 Preparing programmers to be architects Michael Huth, Computing, Imperial College.
The Balance Between Theoretical and Practical Work Within Electrical and Computer Engineering Courses Dr. Bahawodin Baha March Development Partnerships.
Guiding Principles. Goals First we must agree on the goals. Several (non-exclusive) choices – Want every CS major to be educated in performance including.
An Introduction to Software Engineering. Communication Systems.
Numeracy has become… Mathematics Numeracy is extremely important within Mathematics but Mathematics can extend beyond numeracy.
11/9/2003ISECON 2003 Shaun-inn Wu1 Designing a Prerequisite Course for a Computer Information Systems Program in a Computer Science Curriculum Shaun-inn.
Introduction to Design (and Zen) CpSc 372: Introduction to Software Engineering Jason O. Hallstrom Authorship Disclaimer. These.
A radiologist analyzes an X-ray image, and writes his observations on papers  Image Tagging improves the quality, consistency.  Usefulness of the data.
Computer Science, Algorithms, Abstractions, & Information CSC 2001.
Science Process Skills By: Stephanie Patterson and Martha Seixas.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
SSQSA present and future Gordana Rakić, Zoran Budimac Department of Mathematics and Informatics Faculty of Sciences University of Novi Sad
Computer Science 340 Software Design & Testing Software Architecture.
Model Design using Hierarchical Web-Based Libraries F. Bernardi Pr. J.F. Santucci {bernardi, University of Corsica SPE Laboratory.
College of Computer Science, SCU Computer English Lecture 1 Computer Science Yang Ning 1/46.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Unit – I Presentation. Unit – 1 (Introduction to Software Project management) Definition:-  Software project management is the art and science of planning.
Writing a Science or Engineering Paper: It is just a story Frank Shipman Department of Computer Science Texas A&M University.
Impact of the New ASA Undergraduate Curriculum Guidelines on the Hiring of Future Undergraduates Robert Vierkant Mayo Clinic, Rochester, MN.
New Curricula Proposal at FSMN by Miroslav Ćirić & Predrag Krtolica.
ISTD Frequently Asked Questions Most recent update: February 24, 2016.
1 Seattle University Master’s of Science in Business Analytics Key skills, learning outcomes, and a sample of jobs to apply for, or aim to qualify for,
New Computer Science Programme at the Department of Informatics Pedro Guerreiro University of Nis, March 24, 2006.
Introductory Lecture. What is Discrete Mathematics? Discrete mathematics is the part of mathematics devoted to the study of discrete (as opposed to continuous)
Introduction to Math Methods Math Standards. Why can math be fun? Math can be fun because… it can have so much variety in topics. many different ways.
Singapore Maths For Parent Workshop
CSC 222: Computer Programming II
Project 3 Vamsi Kalakuntla
Types for Programs and Proofs
Introduction CSE 1310 – Introduction to Computers and Programming
Introduction to Computers
Introduction To software engineering
Computer Science Section
Presentation transcript:

Educating Programmers: A Customer Perspective Alexander Stepanov A9.com Workshop on Quality Software: A Festschrift for Bjarne Stroustrup Texas A&M University, April 27-28, 2012

Abstract Many programmers lack the skills required for producing quality software. Programming must be taught as a serious discipline, with an extensive core curriculum covering such topics as system decomposition and component design. Developing a sense of programming aesthetics, including the study of real world examples of beautiful programs, is at the heart of this discipline. Grounding in elementary mathematics (algebra and Euclidean geometry) provides the necessary intellectual and aesthetic foundation for the curriculum.

Background For the last 17 years I have been trying to improve software quality at several companies: Silicon Graphics Adobe A9.com All leading-edge companies, employing graduates of leading universities. I worked with different teams, studied their code, and taught advanced classes.

Observation Everybody works as a programmer. Nobody really knows how to program. The idea that there is something more to learn does not even cross their minds. – If they want to learn, it is a new language or a new tool: Java, Hadoop, Squid, etc.

Good code Useful interface, efficient implementation, pleasure to read – Yes, it should be enjoyable to read code If X is original development time – Takes very little time (< 1% X) to learn to use – Takes little time (< 10% X) to extend and modify Good is beautiful, beautiful is good

Beautiful Code is for Toy Examples Only? “Real programs are always ugly...” – a well-known computer scientist and textbook author

Fundamental Programming Skills Architect systems from components Design correct, consistent, extensible APIs Recognize known abstractions Know how and when to make code efficient

Computer Science for Programmers Computer Architecture – characteristics of CPUs, not their design Compiler – understanding its limitations – utilizing its features OS – using threads, not writing schedulers Databases – how and when to use SQL, not design relational DB

What about Programming? Today only introductory programming is taught. No real programs are studied. Testing and measurement techniques are not taught. What should be done?

A Programming Curriculum Introductory programming – Control structures and basic data structures Intermediate programming – Using advanced components and tuning them Advanced programming – Designing new components Master class – Building a system out of components

Writing A class where programmers are taught to describe software. A programmer must be able to communicate their design to others.

Programming in Academia Programming should be taught by people who know and love programming and have done it for a living Nemo dat quod non habet – Music departments

An Internet Journal of Programming To publish refereed – components – measurements – validation – testimonials – use cases

Grounding in Mathematics Mathematics has served every scientific and engineering discipline for many centuries. Mathematics is the science of the abstract. Rich mathematical heritage helps to develop programming aesthetics.

Which Mathematics? Elementary Algebra – Scope of George Chrystal e.g., continued fractions, Bernoulli numbers, etc. supplemented with a little abstract algebra – Develops symbol manipulation and abstraction ability Euclidean Geometry – Euclid is still the best coherent story from book I to book XIII – Develops architectural and reasoning ability

Conclusion: Programming Aesthetics Sense of beauty is important for building large systems and controlling complexity. Study of mathematics develops this sense. 16