Spring 1999
CPSC 307 C and Assembly Language

Peter Smith


Class Times:     Lecture 3:00-3:50 WF     Rm 231E   Lab 3-5 Mon Rm 75F LeMans

Office Hours:  2-3 MWF, 8:30-9:30 TT                            Rm 209 Mad

                    (Other times by appointment)         Office Phone: 4493 
Email:  psmith@saintmarys.edu                            Home Phone: 289-2126
 

Group Roles and Criteria

Knowledge Map for CPSC 307

Class Activities

Lab Activities

Program Assignments

Sample Test Answers to Test 1

Classification of Learning Skills

Information on UNIX and its C Environment

Math Department Honesty Policy

Good downloadable info on UNIX C, gcc, emacs, gdb as well as a 34 page summary of Pointers and Memory

Summer Research Opportunities

SPARC Architecture and Assembly Language

Palindrome Talk

Texts:

References:

Course Objectives:

This course is designed to give an overview of the levels of machine-human interaction: high level (illustrated by programming in C), assembly language level (illustrated by programming in SUN Assembly Language) and machine level (the level at which the computer actually interprets and executes its instructions). This top- down approach is the one we have used when programming in Pascal in earlier courses. It is hard to appreciate just exactly what the computer is doing as it executes a high level program. The best way to understand a computer is to communicate with it in its own language. Machine language programming is very tedious, but assembly language is extremely close to machine language. In addition to increasing one's understanding of the computer, assembly language gives the programmer complete control over the computer's behavior to an extent not possible with most high level languages. Of all the high level languages (Pascal, COBOL, Fortran, Basic, etc.), C gives the greatest control over low-level computer functions, and for this reason it is used extensively in the design of operating systems and compilers. Follow the link to the CPSC 307 Knowledge Map for a more detailed list of topics.

Other important course goals are to increase awareness of and to develop your learning and problem solving skills, and to become efficient working in cooperative groups. By the end of the course, you should be able to learn faster than you do now. You will be conscious of and able to assess your level of the learning skills listed in the attached taxonomy of process education. We will use cooperative group learning, discovery learning, applied critical thinking, problem solving, and self assessment in each class and lab. You will also be expected to keep a learning journal to help you assess your progress.

Research has shown that there are four main learning styles. Some people learn best by sounding out their ideas with others as they develop them. For these learners, small group learning is very effective. Others like to absorb ideas, think about them, and then communicate their responses. Lectures are a preferred learning mode for these students. Still others learn best by solving problems. They find that doing homework is essential to their learning. Finally, there are those who want to put their knowledge to use by working on realistic projects. They need this type of challenge to motivate them. For them, "just in time" learning is best (i.e., they want to learn what they need to know to effectively solve real problems when the knowledge is needed and not before). We will try to engage you in all these learning styles during this course so that you can learn to appreciate the learning styles of others.

Course Theme:

The primary theme of this course is the improvement of the learning process by practicing learning skills in the mastery of computer organization and C and Assembly Language programming. During each class you will work with your team on the following tasks: (1) quiz/problem solving session using information from the reading assignment, (2) minilecture or problem solution presentation, (3) learning exercise (involving concept models to manipulate and critical thinking questions about the models), (4) consulting session (you ask me questions), and (5) assessment of how well you worked as a team to learn the concepts and solve the problems. There will be very little "lecturing." Thus, it is essential that you do the reading for every class.

The reason why we emphasize collaborative learning as described in the preceding paragraph is that employers of systems analysts seek individuals who excel as: (1)

  1. Quick Learners
  2. Critical Thinkers
  3. Problem Solvers
  4. Communicators
  5. Professionals Knowledgeable in Their Field
  6. Team Players
  7. Self Starters
  8. Creative Thinkers

Only 5% of the knowledge gained in college is actually used on the job after you have been on the job for five years. Information is increasing exponentially so a person must become an expert at acquiring and applying knowledge when needed to solve problems.

Course Assignments:

There will be six programming assignments (2 in C, a C project, 2 in Assembly Language, and a final project to write an assembler). All programs should be well documented and points will be deducted if they are not. Programs are due by 6pm on the due dates and assignments handed in late will incur a late penalty of 2 points per weekday. The programming assignments are to be done on an individual basis. You are encouraged to compare ideas with other students but you should write your own programs without using notes made during joint sessions. Copying someone else's work or using their computer files or programs is never allowed. Failure to adhere to this policy will cause loss of all credit for the work in question. See the statement in the student handbook on academic honesty.

The Monday classes will be held in the PC lab working on a weekly lab assignment which should take two hours to complete. Each lab assignment is due the Friday after you start work on it. You may consult with me or others in the class during the lab.

Course Policies

Attendance:

A student is expected to attend every class. If you miss a class, it is your responsibility to make up the work and turn in any missed assignments. If you miss an exam or a homework or project deadline, you receive a grade of zero unless you have an official excuse from Mrs. Marcy's office or have made previous arrangements with me. A student who misses more than five classes without valid excuses will be required to withdraw from the class. The reason for this policy is that you have a responsibility to contribute to your team's efforts. If you aren't there your team is severely handicapped since each team member has a specific role to play.

Team Participation:

I will select the team participants. If someone just does not work out on a team for any number of reasons, the two teams can arrange a trade. The two people to be traded must agree and at least one other member of each team must also agree before a trade can take place.

Honesty Policy:

See the statement in the student handbook and the link to the Math Department honesty Policy at the beginning of the syllabus. In this course, dishonesty will result in a grade of zero for the work involved. Continued infractions will be referred to the Office of Academic Affairs for disciplinary action. You are encouraged to compare ideas with other students but you should write up your own homework without using notes made during joint sessions until you get stuck. Copying someone else's work or using their computer files or programs is never allowed. Failure to adhere to this policy will cause loss of all credit for the work in question.

Grading:

The general grade letter equivalents: A 92-100; A- 88-91; B+ 84-87; B 80-83; B- 76-79; C+ 72-75; C 68-71; C- 64-67; D+ 60-63; D 56-62; F below 56. To figure final grade break points, multiply the above break points by ___ (to be determined by class)


                                                                 Points
  Base Concept Test (1/20)                                10 percent of grade
  Two tests (2/22,  4/19)                                100 points each
  Lab Assignments                                         *  points
  4 programming assignments (due 2/5, 2/19, 3/31, 4/16)   *  points
  2 projects (due 3/19, 5/4)                              *  points
  Daily Quiz/Problem Solution                             10 points each
  Daily Class Assessment                                  10 points each
  Journal                                                 *  points
     Total

Course Syllabus:


 Week           Topic                                       Reference 
                                                         
   1    Introduction to course and Process Education   Syllabus & Scragg Preface
   2    Review of Base Concepts                        Chapter 1, Scragg
   3    High Level Language Model                      Schild, pp. 1-28, 35-62
   4    I/O, pointers, strings in C                    Schild, pp. 33-34, 69-111, 
                                                               117-133
   5    Modularity Constructs                          Chapter 1, Scragg
   6    Review and test
   7    Assembly Language Model and Data Movement      Chapter 2 Scragg
   8    SUN Assembly language overview                 Handout & UNIX Man pages
 Break
   9    Assembly Language Control Structures           Chapter 2 Scragg
  10    Assembly language programming                  Chapters 3,5 Scragg
  11    Machine Language Model                         Chapter 6 Scragg
 Easter
  12    Assembler, Linker, Loader                      Chapter 7 Scragg
  13    Review and test
  14    Memory and Computer Systems                    Chapters 10,11 Scragg
  15    Machine level I/O                              Chapter 12 Scragg


Lab Activities

     Week                          Topic

      1                     Reengineering a C Program
      2                          "    "    "
      3                     Pointers and Dynamic Storage Allocation
      4                     Structs and Header Files
      5                     String Manipulation
      6                     Test
      7                     Reengineering Assembly Language
      8                     Embedded Assembly Language
      9                     Control Structures in Assembly Language
     10                     Subroutines and Parameter Passing
     11                     Assembler and Final Project Assignment
     12                     Test
     13                     Work on Final Project

Learning Journal

Each student must keep a learning journal (composed of the quizzes and activity critical thinking and skill development questions as well as three significant concepts learned, one important process practiced and one learning skill used in our class each day it meets) and a class journal (see below) and bring it to every class. I will collect the reflector's journals on the Thursday following the week in which she is the reflector, beginning February 4. Vary the learning skills (see the link in the on-line syllabus for a list of learning skills for life) you practice. From time to time, I will assign a topic and ask you to write a page about it. In the class journal, you should complete a self assessment form for each class. In addition, the reflector should complete a weekly reflector's report, the recorder should complete a weekly recorder's report, and the captain and spokesperson should each select one activity during the week and complete an activity assessment form. I will grade the journal 60% on completeness; 40% on quality.

1.1D.K. Apple, S.W. Beyerlein, M.A. Schlesinger, Learning Through Problem Solving, Pacific Crest Software, Corvallis, OR (1992), p. vii
CPSC 307 -- Revised 1/4/99

Return to Peter Smith's Home Page