[Skip Navigation] [CSUSB] / [CNS] / [Comp Sci Dept] / [R J Botting] / [CSci201] / 01
[Text Version] [Syllabus] [Schedule] [Glossary] [Labs] [Projects] [Resources] [Grading] [Contact] [Search ]
Notes: <01> [02] [03] [04] [05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]
Podcasts: [01] [02] [03] [04]
Labs: [01] [02] [03]
Thu Jan 17 11:45:31 PST 2008

Contents


    Class 01 of CSCI201 Computer Science I

      Podcast 1

      [ 01.mp3 ]

      What is computer Science?

    1. Programming? [ story.php?storyId=4532247 ] (news story with link to a 9 minute audio story).
    2. CSci is more than Programming!
      • Understanding how software works.
      • Understanding how hardware works.
      • Understanding the limits of computers and software.
      • Using our understanding to make things better (and make money).
      • Working with people to find out how computers can help them.
    3. Key words: algorithm, problem, solution, source code, design, logic, ...
    4. One Key Skill: THINK.

      What is the Job Market Like?

    5. It is never bad if you are smart and well trained. This department has done very well over the years.
    6. A recent survey of of postings on an online job board (Dice.com?) showed that there were more jobs on 2004 than 2003, but they didn't pay as well.
    7. Here is a link to the "User Friendly" Job board: [ http://www.geekfinder.com/ ]
    8. Computer scientists work in just about every field and type of organization. The one thing in common is the existence of problems and the efficient use of computers to solve them.

      Why are you teaching Linux?

      Total cost of ownership, reliable networked systems, + hard core professionals use it.

      Why are you teaching C++?

      Used in many industries. After C++ other languages are easy! It is also leads to programs that execute quickly.

      It is like a tool box full of very sharp power tools. You need to know what you are doing but you get a lot of power and speed in return. C++ is very much the parent of most modern (web-based) languages.

      How is C++ used in Games?

      You need a good graphics and user interface library plus a "games engine" that understands the physics of objects. C++ acts as the glue connecting these components. The components are probably also written in C and/or C++.

      How do you develop a program?

      Very carefully!

      This quarter we will look at two approaches to developing program. The first is good for small scale projects -- one person solving one proplem. The other is for large projects -- many people with a changing set of problems.

      The first method is the structured method and it is good for solving simple problems that don't change.


        First: understand the problem. Second: work out what the user will input and the program will output. Third: work out an algorithm that converts the user's input into the programs output. If possible discuss your algorithm with somebody. Fourth: translate the algorithm into computer code Fifth: test the program and remove the bugs. Sixth: make the fixed program easier to understand. Seventh: User testing...

      The second method is the object-oriented method and it fits the more typical situation of a team of programmers tackling a family of changing problems.


        First: understand the situation -- problems and previous solutions. Second: work out how the user will use the software. Third: sort out the data needed. Fourth: design objects to store the data and do useful things. Fifth: Plan the interactions between the objects. Sixth: write code for the objects, user, data, .... Seventh: Things change -- so go back to the first step.

      There is much to say here. See [ projects.html ] and the productivity and quality tips in our text.

      Why are you teaching UML?

      A picture is worth a thousand words. But to be useful in developing software the picture must be a precise diagram that other people use and understand. The UML is the only industrial diagramming language for software.

      How does a student survive CSCI201?


      1. syllabus [ syllabus.html ]
        • Teacher
        • Book
        • Rules
        • Organization
      2. Schedule [ schedule.html ]
      3. Lab work [ labs.html ]
      4. Assigned work [ schedule.html ]
      5. Class work [ schedule.html ]
      6. Rules [ ../syllabus.html ]

      How do I learn more UNIX?

      The CS Club may conduct a workshop TBA.

      What do I need to do to prepare for this class?

      Have you written a program? Do you want to do it again?

      Should I buy some software or hardware?

      No.

      Can I work at home?

      Yes.... but it is harder than using our labs.

      Is there any tutoring for this class?

      The department doesn't run any special sessions but we usually have some students ready to help at the learning center on campus.

      How has computer programming changed through out the years?

      Here is my quick and personal list.
      1. 1800s Ada Lovelace programs Babbage's Analytical Engine.
        <1940s Programs were written for human computers to execute in English and mathematics.
      2. 1940s Programs written by changing the machine hardware (in secret).
      3. 1950s Instructions written as numbers and stored in memory.
      4. 1960s First programming languages mimic mathematical formula(FORTRAN, ALGOL) or managerial english(COBOL). Programs became complicated so we split them up into independent pieces called modules. Flowcharts used to design programs. Many local low level languages. Mainframes.
      5. 1970s Structured programming. Programs are designed using pseudocode and diagrams and split into functions. Pascal. C and Unix. Minicomputers.
      6. 1980s Data Abstraction. We started to group functions arround data and let other parts of the program only see those functions. Ada. The IBM PC. The Apple ][ and Mac.
      7. 1990s Objects. C++. Java. The Web.
      8. 2000s Modeling: diagrams of objects etc used to analyse problems and design solutions. Scripting: Perl, Ruby, C#, Python,...

        Next -- Lab 01 and Class 02

        [ lab01/ ] [ 02.html ]

      . . . . . . . . . ( end of section Class 1 of CSCI201 Computer Science I) <<Contents | End>>

      Abreviations

    9. Gnu::="Gnu's Not Unix", a long running open source project that supplies a very popular C++ compiler.
    10. KDE::="Kommon Desktop Environment".
    11. TBA::="To Be Announced", something I should do.
    12. TBD::="To Be Done", something you have to do.
    13. UML::="Unified Modeling Language", [ uml.html ] (beginner's introduction to the UML).

    End