introduction
 jbwyatt.com

Readings: Grades , Cheating , CAP card , FAQ , Class Page


.. Who, What, Where...


Joseph Wyatt

www.jbwyatt.com     wyatt@clarion.edu     wyattwyatt@gmail.com

141 Becker Hall
814.393.2643


Computer Information Science (CIS) Department

CS Major     IS Major     CS & IS Minors

Clarion University:  www.clarion.edu

CIS Department: cis.clarion.edu

 Chair:     Susan Traynor
 Secretary: Nancy Harriger

 130 Becker Hall (campus map)
Phone: 814.393.2442 Fax: 814.393.2186

.. Why Computers? (One word: information)

   In the Information Age, information is a key component of our economy.

   Why computers?
      Staggering growth in the volume of information
      Speed at which that information must be manipulated
      Example: intelligence

   Programming / Software Engineering is a very lucrative career.
      Money
      Demand
      Perks
      Satisfaction
      Creativity
      Freedom
      

        Government Projections: BLS



.. Building Software is HARD

      
      Why are there so few majors and even fewer graduates??
---------------------------------------------------------------------------
"Software is hard," reads the quote that opens Rosenberg's Dreaming in Code.
   Why is software in a never-ending state of crisis?
   Why do most projects end up horribly over-budget or cancelled or both?
   Why can't we ship code without bugs?
   Why, everyone asks, can't we build software the same way we build bridges?

---------------------------------------------------------------------------

   "There are very few success stories," said a former deputy
   chief information officer at the Pentagon. "Failures are very
   common, and they've been common for a long time."

---------------------------------------------------------------------------

   The IRS sought $388 million last year for its $1.7 billion "Business
   System Modernization" program, which is over budget and 15 months late.

---------------------------------------------------------------------------

   The FAA has doubled its cost estimates to $1.69 billion for
   its "Standard Terminal Automation Replacement System" since 1996.

---------------------------------------------------------------------------

   "Ever since there's been IT (information technology), there
   have been problems," said a Washington bureau chief. This is difficult."
   

Software Disasters


Software Is Hard


.. Who Becomes a Programmer / Software Engineer?

Ann Gaffigan is a computer programmer/web systems developer with a degree in Computer Science from the University of Nebraska. She has competed professionally in the steeplechase since winning the 3000m steeplechase at the 2004 USA Championships, setting a then-American Record of 9:39.35.

.. Why Clarion? (CIS, CS, IS)


CIS Department

CIS is a department that offers two majors: (There is no "CIS major". )
     CS : BSCS (Computer Science)
     IS : BSIS (Information Systems)

Students graduate from our programs with a solid education and get very good jobs with such outstanding employers as Raytheon, E-Systems, Lockheed Martin, IBM, Mellon Bank, America Online and EDS.
Many students prefer to work for smaller companies, school districts, local governments and state governments.

CS Major

Computer Science (CS): B.S. , 58 credits Required: CIS 163 Intro to Programming & Algorithms I (C++) CIS 244 Intro to Programming & Algorithms II (C++) CIS 253 Computer Org and Assembly Language CIS 254 Data Structures CIS 306 Object-Oriented Programming (Java) CIS 350 Computer Architecture CIS 355 Operating Systems CIS 356 Algorithm Analysis CIS 375 Software Engineering CIS 411 Systems Development Project CIS 460 Prog Languages & Theory of Computation MATH 140, 270, ECON 221, PHIL 311 12 credits of electives in CIS courses 300-level or above.
  • CS might best be described as preparing the students to become experts in the making of the tools (software) that others use to solve problems.

  • CS students study the programming and low-level aspects of the computer. Courses include Data Structures, Computer Architecture, Software Engineering and Operating Systems in addition to classes in C#, C++, Assembly and Java.

  • IS Major

    Information Systems (IS): B.S., 63 credits
    Required:
       CIS 110 Intro to Computer Info Systems
       CIS 202 Event-Driven programming (VB)
       CIS 206 Intro to Java Programming (Java)
       CIS 217 Applications of Microcomputers
       CIS 301 Systems Analysis
       CIS 303 Local Area Networks
       CIS 317 Microcomputer Maintenance
       CIS 330 Advance Event-Driven Programming (VB)
       CIS 402 Data Base
       CIS 403 Data Communications
       CIS 411 Systems Development Project
       MATH 131, 232
       ECON 211, 212, 221;
       ACTG 251, 252; FIN 370, MGMT 320, MKTG 360
    
    Nine credits of electives in CIS courses 300-level or above.
    

  • IS might best be described as preparing the student to become experts in the use of the tool (the computer) as a key component used in complex systems that solve problems in the real world.

  • IS is a business-oriented computing curriculum. IS students study the use and programming of computers in a business environment. Courses include Programming, Applications of Microcomputers, Data Communications, LAN, Systems Analysis and Database Systems. Languages include C# & Java

  • . Computing Needs

  • We will use the putty telnet program, running on a Windows PC, to access jupiter.clarion.edu, a Sun machine running Unix. We will logon to jupiter, use the pico editor to create C++ programs, compile the programs and execute them following the logic of the algorithm we created to solve the problem.

  • We will use personal computers to connect to the Unix mainframe where we will create most of our programs
  • We can access 355 data files on jupiter.clarion.edu via the web
  • We can access 355 code files on jupiter.clarion.edu via the web

  • The puTTy telnet client allows us to connect to jupiter.clarion.edu over the internet

  • Unix is the operating system that we will interact with. There is more info about Unix here.

  • pico is the editor we will use when connected to the jupiter/Unix machine via putty. There is more info about pico here.


  • The Computer Center has much information about campus computer use
  • The "HelpDesk" has specific student-oriented info at Student Computer Info. You can e-mail help desk with your question.

  • WebDrive allows you to hand in some assignments electronically
  • See jbwyatt.com (my web page) for links (lower left)
  • If needed, set your password (lowercase!)
  • Download web drive (or use in lab)
  • Use web drive to map a drive to your computer
  • Use s_FMLastName and password
  • PASSWORD = SS# + 4 digit "PIN" (may be birthdate)
  • Copy assignment to "class_cis1630n" dir under "courses"
  • I will "copy over" your files at appointed time
  • Late submittals will not be copied over & so, will not seen nor graded

  • Can also compile code that will run on your typical Windows/Intel desktop
  • Visual C++ Express is a FREE Microsoft product that will allow you to create, compile and execute C++ programs.

  • . Topics of Coverage

      Objective 1: Understand operating systems

      1. What are they?
      2. What do they do?
      3. How do they do it?

    • If an OS is a manager, what does it manage?
    • memory, process, file system, device
    • Do all computers have operating systems?
    • Are all OS's pretty much the same?

    • Objective 2: Interact with operating systems

      1. Commad line UI
      2. GUI
      3. Systems Programming Interface (unix)
        How is system's programming different?
        Error Handling!
        Documentation!
        Look at straight C, not C++ (more cryptic)

    Some REAL code - note the amount and substance
    in the comments

    /* * Resize a line to make it `cols' columns wide. */ static void resizeline(Terminal *term, termline *line, int cols) { int i, oldcols; if (line->cols != cols) { oldcols = line->cols; /* * This line is the wrong length, which probably means it * hasn't been accessed since a resize. Resize it now. * * First, go through all the characters that will be thrown * out in the resize (if we're shrinking the line) and * return their cc lists to the cc free list. */ for (i = cols; i < oldcols; i++) clear_cc(line, i); /* * If we're shrinking the line, we now bodily move the * entire cc section from where it started to where it now * needs to be. (We have to do this before the resize, so * that the data we're copying is still there. However, if * we're expanding, we have to wait until _after_ the * resize so that the space we're copying into is there.) */ if (cols < oldcols) memmove(line->chars + cols, line->chars + oldcols, (line->size - line->cols) * TSIZE); /* * Now do the actual resize, leaving the _same_ amount of * cc space as there was to begin with. */ line->size += cols - oldcols; line->chars = sresize(line->chars, line->size, TTYPE); line->cols = cols; /* * If we're expanding the line, _now_ we move the cc * section. */ if (cols > oldcols) memmove(line->chars + cols, line->chars + oldcols, (line->size - line->cols) * TSIZE); /* * Go through what's left of the original line, and adjust * the first cc_next pointer in each list. (All the * subsequent ones are still valid because they are * relative offsets within the cc block.) Also do the same * to the head of the cc_free list. */ for (i = 0; i < oldcols && i < cols; i++) if (line->chars[i].cc_next) line->chars[i].cc_next += cols - oldcols; if (line->cc_free) line->cc_free += cols - oldcols; /* * And finally fill in the new space with erase chars. (We * don't have to worry about cc lists here, because we * _know_ the erase char doesn't have one.) */ for (i = oldcols; i < cols; i++) line->chars[i] = term->basic_erase_char; #ifdef TERM_CC_DIAGS cc_check(line); #endif } }

    sometimes need to "speak the lingo"

    note 8/24/07 (iphone cracked): ... Here how the bootrom check works; it reads from 0xA0000030 0xA000A5A0 0xA0015C58 0xA0017370 and all these addresses must read as blank, or 0xFFFFFFFF. When you erase flash, it becoms 0xFFFFFFFF. But you can't erase those locations, because they are in the bootloader. So thats where the testpoint comes in. Pulling A17 high hardware OR's the address bus with 0x00040000(offset one because data bus is 16 bit) So the bootrom instead checks locations 0xA0040030 0xA004A5A0 0xA0045C58 0xA0047370, which are in the main firmware and can be erased. Pretty genius :) =================================== so WE should see that address 0xA000A5A0 becomes 0xA004A5A0...