Fall 2017: About Programming for CIS 121 at Portland Community College
Channel: David Mandel
Date: 04/11/2017

Class material for David Mandel's CS 121 class at Portland Community College.

About Programming

    • Topics
        ◦ What is programming about?
        ◦ What is a programming language?
        ◦ What languages do programmers use?
        ◦ How do programmers approach their work? 
    • Language Performance
        ◦ Machine Language and Assembly
        ◦ Fully Compiled Languages (Fortran, C, C++)
        ◦ Interpreted Languages (Bourne shell, BAT files, SNOBOL)
        ◦ Byte Compiled Languages (perl, ruby, python, php, elisp)
        ◦ Is there such a thing as a “compiled language” or an “interpreted language”?
    • Writing code
        ◦ IDEs – Integrated Development Environments
            ▪ Combine text editor, compiler and/or interpreter, debugger 
            ▪ Eclipse, NetBeans, PyCharm, etc. 
        ◦ Traditional Development Environments
            ▪ Text editor of choice (emacs, vi, etc)
            ▪ Compiler or interpreter of choice
            ▪ Tools like m4, make, autoconf, cvs, subversion, or github to handle code
            ▪ Debugger of choice
            ▪ Testing and Bug reporting systems – bugzilla
            ▪ Package Managers (rpm, deb, etc.)
            ▪ Documentation systems like man, info files, on-line documentation, etc.
        ◦ Structure vs. Spaghetti
            ▪ Elements of Programming Style by Brian Kernighan & P. J. Plauger 
        ◦ Modularity
            ▪ Source code include files
            ▪ Subroutines, functions, modules, methods, etc.
        ◦ Storage Structure of Large Programming
            ▪ Tree structure
            ▪ Each module in it’s own file
            ▪ Might need version control system like github
    • Software Design Methodologies
        ◦ http://www.itinfo.am/eng/software-development-methodologies/
            ▪ Bureaucratic gobbledygook??
        ◦ The Un-methodology (Open Source Development)
            ▪ Get training from people doing the task to be automated
            ▪ Do research – talk with “experts”
            ▪ Beg, borrow, steal resources
            ▪ Do a proto-type asap
            ▪ Do quick documentation
            ▪ Get people using it
            ▪ Start giving presentations at conferences, user groups, etc.
            ▪ Beg, borrow, steal more resources
            ▪ Recruit more developers, users, documentation people, marketing help, support people – Don’t limit search to company, country, or anything else
            ▪ Create more complete design documentation
            ▪ Rewrite or refine proto-type
            ▪ Rewrite or refine admin and user documentation
            ▪ Continue process for as long as possible

List of web links used in this video:
            ▪  https://en.wikipedia.org/wiki/Programming_language
              ▪ 
 https://en.wikipedia.org/wiki/Von_Neumann_programming_languages
            ▪  https://www.computerhope.com/jargon/p/proglang.htm
            ▪ 
 https://en.wikipedia.org/wiki/List_of_programming_languages
            ▪ 
 https://en.wikipedia.org/wiki/List_of_programming_languages_by_type
            ▪ 
 https://en.wikipedia.org/wiki/Integrated_development_environment
            ▪ 
 http://www2.ing.unipi.it/~a009435/issw/extra/kp_elems_of_pgmng_sty.pdf
            ▪ 
 https://www.edutechlearners.com/download/books/The%20C%20Programming%20Language%20by%20Kernighan%20&%20Ritchie%20PDF.pdf
            ▪  http://www.itinfo.am/eng/software-development-methodologies/