![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Computing Curricula 2003: Guidelines for Associate-Degree Curricula in Computer Science |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
December 2002 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
The Joint Task Force on Computing Curricula Richard Austing – University of Maryland, University College
Robert D. Campbell– Rock
Valley College C. Fay Cover– Sun Microsystems Elizabeth K. Hawthorne – Union County College Karl J. Klee – Alfred State College |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
This report is available for viewing and download at: http://www.acmtyc.org and http://computer.org/education/cc2001
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Computing Curricula 2003: Guidelines for Associate-Degree Curricula in Computer Science |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
December 2002 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The ACM Two-Year College Education Committee
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Copyright © 2003 by The
Institute of Electrical and Electronics Engineers, Inc.
Other copying, reprint, or republication requests should be addressed to: IEEE Copyrights Manager, IEEE Service Center, 445 Hoes Lane, P.O. Box 133, Piscataway, NJ 08855-1331. The papers in this book comprise the proceedings of the meeting mentioned on the cover and title page. They reflect the authors’ opinions and, in the interests of timely dissemination, are published as presented and without change. Their inclusion in this publication does not necessarily constitute endorsement by the editors, the IEEE Computer Society, or the Institute of Electrical and Electronics Engineers, Inc. IEEE Computer Society Order Number CS01930 Additional copies may be ordered from:
Cover art production by Joe Daigle/Studio Productions Printed in the United States of America by The Printing House |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chapter 1. Overview1.1 Goals and PurposeThis report provides guidelines for computer science programs in associate-degree granting institutions. It places a principle focus on programs designed for students intending to transfer into baccalaureate programs, accompanied by deliberate guidelines designed to facilitate matters of articulation. It also presents a body of knowledge for computer science in the two-year college setting, associated learning objectives, and detailed descriptions of computer science and accompanying mathematics courses appropriate for implementation in associate-degree programs. Three specific implementation approaches for introductory courses provide the backbone for this report: imperative-first, objects-first, and breadth-first. The report specifies computer science elective courses that have a computer science introductory course sequence as a prerequisite; these electives provide curricula to support a career-oriented graduate as well as content appropriate for transfer consideration. In addition, it outlines required mathematics courses. It addresses other aspects requisite to a successful computer science program, including a brief indication of the two-year college environment; administration, faculty, and computing resource issues; and requirements from other disciplines. This report updates the Computing Science volume of the Computing Curricula Guidelines for Associate-Degree Programs issued in 1993 by the ACM Two-Year College Education Committee. The report also shares common goals and outcomes with the recent computer science curricula recommendations for baccalaureate programs developed by the Joint Task Force on Computing Curricula 2001 established by the Institute of Electrical and Electronics Engineers Computer Society (IEEE-CS) and the Association for Computing Machinery (ACM). The IEEE-CS and ACM recognized the need to revise and update their previous curricular reports; the new CC2001 CS report can be found at http://www.computer.org. 1.2 BackgroundIn the spring of 2001, the ACM Two-Year College Education Committee (whose membership includes the Chair of the newly instituted IEEE-CS Two-Year College Committee) assembled a joint IEEE-CS/ACM Task Force made up of computing faculty, administrators and industry representatives to prepare curricular guidelines for associate-degree programs in computer science. This Task Force split into subgroups based on implementation strategies, and used the Iron-Man version of the draft IEEE-CS/ACM CC2001 CS report, as well as the two-year college 1993 Report, as a starting point from which to identify the topics and objectives that should be included in an associate-degree computer science program. The subgroups subsequently assembled this work into a draft report and shared it with the entire Task Force and with the CC2001 Steering Committee for feedback. In the fall of 2001, a sub-committee of the Task Force further refined the objectives, revised the courses, composed the narrative, and distributed internationally the entire document to a set of reviewers. Following that review, the ACM Two-Year College Education Committee produced the final report, which the IEEE Computer Society Education Activities Board and the ACM Education Board subsequently accepted and published. 1.3 Structure of this ReportThis report contains three chapters: Overview, Body of Knowledge, and Curricula. It discusses the general issues related to offering a computer science program in a two-year college environment in this Overview. The Body of Knowledge chapter specifies the following areas, or sub-fields, of computer science:
Each of these areas consists of units. In turn, each unit consists of topics with associated learning objectives. The Curricula chapter defines three approaches for implementing a computer science program; for each, sample courses, both required and elective, are detailed. Each course description includes a list of topics with the appropriate associated learning objectives. This chapter also includes a chart and table illustrating the course sequencing. The three strategies for implementation are: imperative-first, objects-first, and breadth-first.
1.4 The Two-Year College EnvironmentThe two-year college environment is a unique setting due to a variety of factors resulting from the threefold mission of two-year colleges to provide a learning environment for:
In addition, many two-year colleges are drivers of local economic development and the sources of a wide range of community events, activities, and services. Two-year colleges serve high school graduates proceeding directly into college, workers needing to upgrade skill sets or master new ones in order to re-enter the workforce, immigrants seeking to become integrated into the local culture and master a new language, individuals leaving the workplace to engage college-level coursework for the first time, returning students with college degrees who have decided to pursue an alternate career path, and many individuals in need of ongoing training and skill updating. This diversity is addressed in numerous ways, including targeted career counseling, remediation of basic skills, specialized course offerings, individualized instruction and attention, flexible scheduling and delivery methodologies, and a strong emphasis on retention and successful completion. Furthermore, because two-year colleges have less restrictive entrance requirements, faculty must be prepared to instruct students exhibiting a broad range of academic preparations, aptitudes, and learning styles. 1.5 Sustaining a ProgramAdministration and leadership at two-year colleges must be prepared to provide adequate support for computer science programs, often within an environment very limited resources. Two-year colleges must fund the resources and professional activities necessary to sustain these programs, including:
Recruiting, hiring, and retaining qualified fulltime faculty continues to be a challenge for two-year colleges. It is necessary to make extensive use of adjunct and part-time faculty, who fortunately, often provide specific technical skills and teaching techniques for specialized courses. However, the recruitment, development, evaluation, and retention of talented adjunct faculty require a commitment of institutional financial resources, as well as the time of faculty and staff. Two-year colleges must accurately and effectively measure student learning with associated outcomes. Accreditation requirements, performance-based funding and public demands for accountability have made effective educational assessment a necessity. Hence, computer science courses and programs must have clear, precise and measurable learning objectives with associated student outcomes. Two-year colleges must develop transition and articulation strategies applicable to the colleges and universities to which their students most often transfer. It may be necessary to modify course content to facilitate transfer credit and articulation agreements. In some cases, it may be necessary for two-year colleges to modify their list of recommended courses to match the requirements of their primary transfer institutions. The Task Force designed the courses recommended in this report, especially those specified for a beginning sequence, to facilitate articulation between a two-year college and a baccalaureate institution. Programs must take into consideration the general education requirements at both the two-year college and the transfer institution in the formulation of a student’s program of study. Many students enter two-year colleges with insufficient mathematics preparation for a computer science program. Such students must devote additional semesters to achieve the mathematical maturity and problem-solving skills required to be successful in computer science coursework. The two-year college programs of study outlined in this report expect that students have sufficient mathematics background and computer fluency skills prior to entering the first computing course. These programs also require two semesters of discrete mathematics as integrated components in the overall degree requirements. Furthermore, the studies of computing and mathematics require coordination and synchronization to ensure that students engage theory and application in a meaningful way. 1.6 Articulation of Transfer ProgramsArticulation of courses and programs between two academic institutions facilitates the transfer of students from one institution to the other. The goal is to enable students to transfer in as seamless a manner as possible. Efficient and effective articulation requires accurate assessment of courses and programs as well as meaningful communication and cooperation. Both students and faculty have responsibilities and obligations for successful articulation. Students must realize that courses and program requirements change over time. If a student takes too long to complete a program, a different articulation agreement might be in effect at the time a student requests to transfer. Hence, students must expect to complete programs in their entirety up to well-defined exit points at one institution before transferring to another institution; articulation cannot be expected to accommodate potential transfers in the middle of a well-defined and recognized body of knowledge. Faculty must ensure that they clearly define program requirements, address program objectives in a responsible manner, and evaluate students effectively against defined standards. When specifying points of exit within the articulation agreement document, faculty at the transferring institution must provide sufficient material to prepare students to pursue further academic work at least as well as students at the second institution. This report is specifically designed to promote articulation by enabling computer science faculty in two-year colleges and universities to compare curricula on a topical basis using this report together with the new IEEE-CS/ACM CC2001 Computer Science Report. The table below lists the computer science body of knowledge (areas and units) from the CC2001 CS report; it can be seen that the two reports share area and unit headings where appropriate. The italicized unit headings represent upper-division areas and units that are not included in the two-year college recommendations.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 1.1 Computer Science Body of Knowledge (CC2001 CS report)
Note: The italicized items are not included within the two-year college programs outlined in this report. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
In many cases, one particular course in one institution might not be equivalent to a single course at the second institution. However, a group or sequence of courses could be determined equivalent to another course grouping or sequence even though the number of courses differ. In particular, each of the three-course sequences in each of the three approaches in this report is fundamentally equivalent to the corresponding sequences in the IEEE-CS/ACM CC2001 CS report, and each is designed to be at least equivalent to the corresponding two-course sequence in the CC2001 CS report. Students completing any of the three-course sequences described herein should be well prepared for further work in computer science. 1.7 Career-Oriented ProgramsPrograms at two-year colleges fall into two general orientations, career or transfer. A career program typically provides a broad educational foundation as well as specific knowledge, skills and abilities needed to proceed directly into the work environment. Students graduating from a two-year career-oriented program often enter the work force immediately, and once they have gained work experience, some may then pursue a baccalaureate program in computer science. Unless a college specifically designed a student’s associate-degree program for transfer to a baccalaureate program, the student will normally be required to take additional courses before entry into the upper division. At the beginning of their associate-degree studies, the college should make students aware of the distinctions between career and transfer programs, the academic requirements of each, and the associated employment options. The following factors help ensure the success of students in the workplace and the viability of a career-oriented computer science degree program:
This report includes both required and elective courses intended to prepare students either to enter the workforce directly or to transfer into a baccalaureate program. Detailed course descriptions for the required courses (CS101, CS102, CS103) for each implementation as well as the following computer science elective courses are included in the Curricula chapter of this report.
1.8 Incorporating Professional PracticesA transfer program or a career-oriented program in computer science must provide students a variety of opportunities for professional practices. Faculty at two-year colleges are well aware of the importance of including practical and applied work as an integral part of all computing programs, including computer science. Their students are encouraged to work in teams, solve practical problems in course projects, make presentations, confront issues of privacy and ethics, use current technology in laboratories, and attain real-world experience through cooperative education, internships and other practicum activities. An active industry advisory committee can be an important asset in helping faculty incorporate current professional practices into the curriculum, as well as providing valuable contacts for students seeking employment placement. Faculty know that a conscious and proactive incorporation of professional practices into a curriculum in computer science benefits students, either as a valuable component in a transfer-oriented computer science degree program, or in addressing industry needs for qualified personnel as they exit a career-oriented computer science degree program. 1.9 Additional Program ComponentsIn addition to the required and elective computer science courses, a college must design a degree program to fulfill other objectives as well. These include providing students with a level of mathematical knowledge and ability, familiarity with the scientific method of discovery and reasoning, effective written and oral communication skills, and the ability to work cooperatively and effectively as a member of a team. Prior to entry into the computer science associate-degree program, students must demonstrate mastery of mathematics equivalent to that required to qualify for the standard precalculus course, fundamental computer fluency, and readiness to pursue the college-level coursework called for herein. The crucial role of mathematics in the foundation of computer science requires that students initiate their mathematics studies early in the pursuit of this degree program. In parallel with their three-course introductory computer science sequence, students must complete a two-semester discrete math sequence (defined in Chapter Three of this report). The learning objectives associated with discrete mathematics specifically support this degree program, and a mathematics department or a computing department (or jointly) should deliver such content with that intent. The discrete mathematics should be an infusion with computer science applications and instructors should continuously reinforce such topics in subsequent computer science courses. Note that no calculus course appears in these degree specifications; however, some baccalaureate programs may continue to designate a calculus requirement, and therefore some transfer students will need to complete such courses. Many students will also benefit from a course in statistics (see definition in Chapter Three) and this should be available as a program elective. A familiarity with the scientific method (summarized as formulating problem statements and hypothesizing, designing and conducting experiments, observing and collecting data, analyzing and reasoning, and evaluating and concluding) is extremely valuable in the setting of computer science studies. In fact, the scientific method reasonably presents a basic methodology for much of the discipline of computing. Students pursuing a computer science curriculum should engage rigorous science coursework that includes strong training in the tenets of the scientific method and includes direct hands-on laboratory experiences. Advisors should guide students intending to transfer into a baccalaureate program (immediately or as a long-term goal) to select science coursework with that objective in mind. Effective communication abilities are of critical importance to nearly every computer science career. Therefore, communication skills must be identified, developed, nurtured and called upon throughout a computer science degree program. A student must master effective writing, speaking, and listening abilities, and then consistently demonstrate those abilities in a variety of settings, including formal and informal, large group and one-on-one, technical and non-technical, point and counter-point. Such activities should occur across the breadth of the curriculum and in particular, should substantially appear in computer science courses. These guidelines call for the incorporating into the computing curriculum both a breadth of professional practices as well as various forms of effective communication by the students. Programs best serve the students by requiring them to take courses that provide a social context for their overall education. Today’s world is one of rapid change requiring routine interaction on a global scale with individuals of diverse cultures and languages and greater emphasis on interpersonal skills. Students should engage courses as part of their total program that assist them in preparing for this world; in like fashion, such topics should be widely incorporated into numerous courses across many disciplines. Colleges will ensure that degree programs ultimately fulfill all general education and related requirements arising from institutional, state, and regional accreditation guidelines. The curriculum recommendations contained herein are compatible with those requirements. Articulation agreements often guide curriculum content as well, and are important considerations in the formulation of programs of study, especially for transfer-oriented programs. For that reason, the Task Force has made every effort to establish compatibility between these guidelines and newly established guidelines for baccalaureate programs in computer science. Faculty interests and areas of expertise also influence programs. Thus, it has made provisions to accommodate specialized emphases within these curriculum guidelines. Industry advisory committees also influence and guide curricula, especially career-oriented programs. Those considerations can generally be fit into these guidelines as well, particularly as a collection of elective courses. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chapter 2. Body of Knowledge2.1 IntroductionThis chapter details the specific content areas, units, topics and learning objectives for the required computing courses and the mathematics courses in associate-degree programs in computer science. The Range of coverage time for each unit is determined by the instructional paradigm (Objects, Imperative, or Breadth) and the chosen electives.
Table 2.1 – Summary of Content Areas and Units
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.2 Algorithms and Complexity (AL)
Algorithms are fundamental to computer science and software engineering. The real-world performance of any software system depends on only two things: (1) the algorithms chosen and (2) the suitability and efficiency of the various layers of implementation. Good algorithm design is therefore crucial for the performance of all software systems. Moreover, the study of algorithms provides insight into the intrinsic nature of the problem as well as possible solution techniques independent of programming language, programming paradigm, computer hardware, or any other implementation aspect. An important part of computing is the ability to select algorithms appropriate to particular purposes and to apply them, recognizing the possibility that no suitable algorithm may exist. This facility relies on understanding the range of algorithms that address an important set of well-defined problems, recognizing their strengths and weaknesses, and their suitability in particular contexts. Efficiency is a pervasive theme throughout this area. AL – Basic algorithmic analysis
Learning objectives:
AL - Algorithmic strategies
Learning objectives:
AL - Fundamental computing algorithms
Learning objectives:
AL - Basic computability
Learning objectives:
AL - The complexity classes P and NP
Learning objectives:
2.3 Architecture and Organization (AR)
The computer lies at the heart of computing. Without it most of the computing disciplines today would be a branch of theoretical mathematics. To be a professional in any field of computing today, one should not regard the computer as just a black box that executes programs by magic. All students of computing should acquire some understanding and appreciation of a computer system’s functional components, their characteristics, their performance, and their interactions. There are practical implications as well. Students need to understand computer architecture in order to structure a program so that it runs more efficiently on a real machine. In selecting a system to use, they should to able to understand the tradeoff among various components, such as CPU clock speed versus memory size. AR - Digital logic and digital systems
Learning objectives:
AR - Machine level representation of data
Learning objectives:
AR - Assembly level machine organization
Learning objectives:
AR - Memory system organization and architecture
Learning objectives:
AR - Interfacing and communication
Learning objectives:
AR - Functional organization
Learning objectives:
AR - Multiprocessing and alternative architectures
Learning objectives:
AR - Architecture for networks and distributed systems
Learning Objectives:
2.4 Discrete Structures (DS)
The area of discrete structures is foundational material for computer science. By foundational we mean that relatively few computer scientists will be working primarily on discrete structures, but that many other areas of computer science require the ability to work with concepts from discrete structures. The area of discrete structures includes important material from such areas as set theory, logic, graph theory, and combinatorics. The notion of formal, mathematical proof is a unifying theme throughout the area. The material in discrete structures is pervasive in the areas of data structures and algorithms but appears elsewhere in computer science as well. For example, an ability to create and understand a formal proof is essential in formal specification, in verification, and in cryptography. Professionals use graph theory concepts in networks, operating systems, and compilers and set theory concepts in software engineering and in databases. As the field of computer science matures, increasingly sophisticated analysis techniques are being brought to bear on practical problems. To understand the computational techniques of the future, today’s students will need a strong background in discrete structures. Finally, we note that while areas often have somewhat fuzzy boundaries, this is especially true for discrete structures. The Task Force has gathered together here a body of material of a mathematical nature that computer science education must include, and that computer science educators know well enough to specify in detail. However, the decision about where to draw the line between this area and the Algorithms and Complexity area (AL) on the one hand, and topics left only as supporting mathematics on the other hand, was inevitably somewhat arbitrary. We remind readers that there are vital topics from those two areas that some schools will include in courses with titles like discrete structures. DS - Functions, relations, and sets
Learning objectives:
DS - Basic logic
Learning objectives:
DS - Proof techniques
Learning objectives:
DS - Basics of counting
Learning objectives:
DS - Graphs and trees
Learning objectives:
DS - Discrete probability
Learning objectives:
DS – Interpreting descriptive statistics
Learning objectives:
2.5 Graphics and Visual Computing (GV)
Computer graphics is the art and science of communicating information. It uses images generated and presented through computation. This requires the design and construction of models that represent information in ways that support the creation and viewing of images, the design of devices and techniques through which the person may interact with the model or the view, the creation of techniques for rendering the model, and the design of ways the images may be preserved. The goal of computer graphics is to engage the person’s visual centers alongside other cognitive centers in understanding. GV - Fundamental techniques in graphics
Learning objectives:
GV - Graphic systems
Learning objectives:
2.6 Human Computer Interaction (HC)
This list of topics presents an introduction to human-computer interaction for computer science majors. It places emphasis on understanding human behavior with interactive objects, knowing how to develop and evaluate interactive software using a human-centered approach, and general knowledge of HCI design issues with multiple types of interactive software. HC - Foundations of human computer interaction
Learning objectives:
HC - Building a simple graphical user interface
Learning objectives:
HC - Graphical user-interface design
Learning objectives:
HC - HCI aspects of multimedia systems
Learning objectives:
2.7 Information Management (IM)
Information Management (IM) plays a critical role in almost all areas where computers are used. This area includes the capture, digitization,representation, organization, transformation, and presentation of information; algorithms for efficient and effective access and updating of stored information, data modeling and abstraction, and physical file storage techniques. It also encompasses information security, privacy, integrity, and protection in a shared environment. The student needs to be able to develop conceptual and physical data models, determine what IM methods and techniques are appropriate for a given problem, and be able to select and implement an appropriate IM solution that reflects all suitable constraints, including scalability and usability. IM - Information models and systems
Learning objectives:
IM - Database systems
Learning objectives:
IM - Database query languages
Learning objectives:
IM - Hypertext and hypermedia
Learning objectives:
2.8 Net-Centric Computing (NC)
Recent advances in computer and telecommunications networking, particularly those based on TCP/IP, have increased the importance of networking technologies in the computing discipline. Net-centric computing covers a range of sub-specialties including: computer communication network concepts and protocols, multimedia systems, Web standards and technologies, network security, wireless and mobile computing, and distributed systems. Mastery of this subject area involves both theory and practice. Learning experiences that involve hands-on experimentation and analysis are strongly recommended as they reinforce student understanding of concepts and their application to real-world problems. Laboratory experiments should involve data collection and synthesis, empirical modeling, protocol analysis at the source code level, network packet monitoring, software construction, and evaluation of alternative design models. All of these are important concepts that can best understood by laboratory experimentation. NC - Introduction to net-centric computing
Learning objectives:
NC - Communication and networking
Learning objectives:
NC - Network security
Learning objectives:
NC - The Web as an example of client-server computing
Learning objectives:
NC - Building web applications
Learning objectives:
NC - Network management
Learning objectives:
NC - Compression and decompression
Learning objectives:
NC - Multimedia data technologies
Learning objectives:
2.9 Operating Systems (OS)
An operating system defines an abstraction of hardware behavior with which programmers can control the hardware. It also manages resource sharing among the computer’s users. Over the years, operating systems and their abstractions have become complex relative to typical application software. It is necessary to ensure that the student understands the extent of the use of an operating system before a detailed study of internal implementation algorithms and data structures. Therefore this content area addresses both the use of operating systems (externals) and their design and implementation (internals). Many of the ideas involved in operating system use have wider applicability across the field of computer science, such as concurrent programming. Studying internal design has relevance in such diverse areas as dependable programming, algorithm design and implementation, modern device development, building virtual environments, caching material across the web, building secure and safe systems, network management, and many others. OS - Overview of operating systems
Learning objectives:
OS - Operating system principles
Learning objectives:
OS - Concurrency
Learning objectives:
OS - Scheduling and dispatch
Learning objectives:
OS - Memory management
Learning objectives:
OS - Device management
Learning objectives:
OS - Security and protection
Learning objectives:
OS - File systems
Learning objectives:
OS - Scripting
Learning objectives:
2.10 Programming Fundamentals (PF)
This knowledge area consists of those skills and concepts that are essential to programming practice independent of the underlying paradigm. As a result, this area includes units on fundamental programming concepts, basic data structures, and algorithmic processes. These units, however, by no means cover the full range of programming knowledge that a computer science undergraduate must know. Many of the other areas—most notably Programming Languages (PL) and Software Engineering (SE)—also contain programming-related units that are part of the undergraduate core. In most cases, these units could apply to either Programming Fundamentals or the more advanced area. PF - Fundamental programming constructs
Learning objectives:
PF - Algorithms and problem solving
Learning objectives:
PF - Fundamental data structures
Learning objectives:
PF - Recursion
Learning objectives:
PF - Event-driven programming
Learning objectives:
2.11 Programming Languages (PL)
A programming language is a programmer’s principal interface with the computer. More than just knowing how to program in a single language, programmers need to understand the different styles of programming promoted by different languages. In their professional life, they will be working with many different languages and styles at once, and will encounter many different languages over the course of their careers. Understanding the variety of programming languages and the design tradeoffs between the different programming paradigms makes it much easier to master new languages quickly. Understanding the pragmatic aspects of programming languages also requires a basic knowledge of programming language translation and runtime features such as storage allocation. PL - Overview of programming languages
Learning objectives:
PL - Virtual machines
Learning objectives:
PL - Introduction to language translation
Learning objectives:
PL - Declarations and types
Learning objectives:
PL - Abstraction mechanisms
Learning objectives:
PL - Object-oriented programming
Learning objectives:
PL - Functional programming
Learning objectives:
2.12 Software Engineering (SE)
Software engineering is the discipline concerned with the application of theory, knowledge, and practice for effectively and efficiently building software systems that satisfy the requirements of users and customers. Software engineering is applicable to small, medium, and large-scale systems. It encompasses all phases of the life cycle of a software system. The life cycle includes requirement analysis and specification, design, construction, testing, and operation and maintenance. Software engineering employs engineering methods, processes, techniques, and measurement. It benefits from the use of tools for managing software development; analyzing and modeling software artifacts; assessing and controlling quality; and for ensuring a disciplined, controlled approach to software evolution and reuse. Software development, which can involve an individual developer or a team of developers, requires choosing the tools, methods, and approaches that are most applicable for a given development environment. The elements of software engineering are applicable to the development of software in any computing application domain where professionalism, quality, schedule, and cost are important in producing a software system. SE - Software design
Learning objectives:
SE - Using APIs
Learning objectives:
SE - Software tools and environments
Learning objectives:
SE - Software processes
Learning objectives:
SE - Software requirements and specifications
Learning objectives:
SE - Software validation
Learning objectives:
SE - Software evolution
Learning objectives:
SE - Software project management
Learning objectives:
2.13 Social and Professional Issues (SP)
SP - History of computing
Learning objectives:
SP - Social context of computing
Learning objectives:
SP - Methods and tools of analysis
Learning objectives:
SP - Professional and ethical responsibilities
Range of coverage time: 0-1 hours
Learning objectives:
SP - Risks and liabilities of computer-based systems
Learning objectives:
SP - Intellectual property
Learning objectives:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chapter 3. Curricula3.1 Curriculum OverviewFor each implementation strategy, this chapter provides a detailed package of courses that includes all of the recommended learning objectives for the particular implementation. In addition, each implementation should include courses to satisfy the college’s general education requirements; related program electives; and sufficient other electives for the requisite credit hour total needed for an associate-degree program. The combination of general education and elective courses should also be chosen to provide the auxiliary skills specified in Chapter One of this report. Each three-course sequence described in each of the three approaches in this report is fundamentally equivalent to the corresponding sequence in the IEEE-CS/ACM CC2001 CS report, and each is designed to be at least equivalent to the corresponding two-course sequence in the CC2001 CS report. A course-by-course comparison between the two reports will reveal differences that generally reflect additional time and preparatory material provided in the two-year college setting. Students completing any of the three-course sequences described herein should be well prepared for further work in computer science. The following table and chart illustrate the sequencing for the required and elective computing and math courses in an associate-degree program in computer science. This course sequencing applies irrespective of the chosen implementation strategy. This course sequence assumes the student has prerequisite skills in computer fluency to enter the first computer science course (CS 101), and the fundamental mathematics necessary to enter into the first discrete mathematics course (CS 105). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Table 3.1: Possible Course Sequencing by Semester
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chart 3.1 Course Sequencing and Prerequisite Relationships
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.2 The Objects-first Implementation StrategyThe Objects-first implementation strategy incorporates throughout the curriculum object-oriented software design and programming methodologies. Object-oriented design promotes thinking about software development in a way that more closely models interaction with the real world. Modeling programming problems as abstract objects that communicate with each other helps to manage the complexity of software projects. The object-oriented programming paradigm is based on the relationship of interacting and cooperating data objects to solve computing problems. CS101O: Introduction to Object-Oriented Programming This course introduces the fundamental concepts of programming from an object-oriented perspective. Topics include simple data types, control structures, an introduction to array and string data structures and algorithms, as well as debugging techniques and the social implications of computing. The course emphasizes good software engineering principles and developing fundamental programming skills in the context of a language that supports the object-oriented paradigm. Prerequisites: No programming or computer science experience is required; mathematical preparation sufficient to qualify for precalculus at the college level. Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the first semester of an objects-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101O-102O-103O. Although this is the first course of the educational process for a computer science student, it is reasonable to expect that a student will have at least some exposure to computers before taking this course. The prepared student will have experience with email, World Wide Web use, and basic word processing. Note that this course will not necessarily be taken during a student’s first semester in college. Any remedial work (generally identified as “developmental studies” or “learning support” coursework) in mathematics or language arts should be completed before the student is allowed to begin this course sequence. What differentiates this course sequence from the imperative-first implementation in CS101I-102I 103I is the early emphasis on objects. The discussion of classes, subclasses, and inheritance typically precedes even such basic concepts as conditional and iterative control statements. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CS102O: Objects and Data Abstraction This course continues the introduction from CS101O to the methodology of programming from an object-oriented perspective. Through the study of object design, this course also introduces the basics of human-computer interfaces, graphics, and the social implications of computing, with an emphasis on software engineering. Prerequisite: CS 101O Corequisite: CS 105 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the second semester of an objects-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101O-102O-103O. This second computer science course should be taken in parallel with the first discrete mathematics course, CS 105, to ensure that the appropriate mathematical foundations of computer science are covered along with the applications of those topics. What differentiates this course sequence from the imperative-first implementation in CS101I-102I 103I is the early emphasis on objects. The discussion of classes, subclasses, and inheritance typically precedes even such basic concepts as conditional and iterative control statements. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CS103O: Algorithms and Data Structures This course builds upon the introduction to object-oriented programming begun in CS101O and CS102O with an emphasis on algorithms, data structures, and software engineering. Prerequisite: CS 102O Corequisite: CS 106 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the third and final semester of an objects-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101O-102O-103O. This third computer science course should be taken in parallel with the second discrete mathematics course, CS 106, to ensure that the appropriate mathematical foundations of computer science are covered along with the applications of those topics. What differentiates this course sequence from the imperative-first implementation in CS101I-102I 103I is the early emphasis on objects. The discussion of classes, subclasses, and inheritance typically precedes even such basic concepts as conditional and iterative control statements. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.3 The Imperative-first Implementation StrategyThe Imperative-first approach consists of a three-course sequence that begins with a procedural structured-programming approach to fundamental programming concepts, followed by object-oriented concepts, and culminates with data structures. CS101I: Programming Fundamentals This course introduces the fundamental concepts of procedural programming. Topics include data types, control structures, functions, arrays, files, and the mechanics of running, testing, and debugging. The course also offers an introduction to the historical and social context of computing and an overview of computer science as a discipline. Prerequisites: No programming or computer science experience is required; mathematical preparation sufficient to qualify for precalculus at the college level. Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the first semester of an imperative-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101I-102I-103I. Although this is the first course of the educational process for a computer science student, it is reasonable to expect that a student will have at least some exposure to computers before taking this course. The prepared student will have experience with email, World Wide Web use, and basic word processing. Note that this course will not necessarily be taken during a student’s first semester in college. Any remedial work (generally identified as “developmental studies” or “learning support” coursework) in mathematics or language arts should be completed before the student is allowed to begin this course sequence. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CS102I: The Object-Oriented Paradigm This course introduces the concepts of object-oriented programming to students with a background in the procedural paradigm. The course begins with a review of control structures and data types with emphasis on structured data types and array processing. It then moves on to introduce the object-oriented programming paradigm, focusing on the definition and use of classes along with the fundamentals of object-oriented design. Other topics include an overview of programming language principles, simple analysis of algorithms, basic searching and sorting techniques, and an introduction to software engineering issues. Prerequisite: CS 101I Corequisite CS 105 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the second semester of an imperative-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101I-102I-103I. This second computer science course should be taken in parallel with the first discrete mathematics course, CS 105, to ensure that the appropriate mathematical foundations of computer science are covered along with the applications of those topics. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CS103I: Data Structures and Algorithms This course builds upon the foundation provided by the CS101I-102I sequence to introduce the fundamental concepts of data structures and the algorithms that proceed from them. Topics include recursion, the underlying philosophy of object-oriented programming, fundamental data structures (including stacks, queues, linked lists, hash tables, trees, and graphs), the basics of algorithmic analysis, and an introduction to the principles of language translation. Prerequisites: CS 102I Corequisite: CS 106 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the third and final semester of an imperative-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101I-102I-103I. This third computer science course should be taken in parallel with the second discrete mathematics course, CS 106, to ensure that the appropriate mathematical foundations of computer science are covered along with the applications of those topics. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.4 The Breadth-first Implementation StrategyThe Breadth-first approach covers a wide expanse of computer science topics in a three-course sequence, and emphasizes the mastery, selection and use of appropriate programming paradigms in a problem-solving context. This course presents a broad overview of computer science that integrates programming with hardware fundamentals, algorithms, and computability. Topics include: Problem-solving strategies, study of algorithms, programming paradigms, and the social and historical context of computing. Prerequisite: No programming or computer science experience is required; mathematical preparation sufficient to qualify for precalculus at the college level. Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the first semester of a breadth-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101B-102B-103B. Although this is the first course of the educational process for a computer science student, it is reasonable to expect that a student will have at least some exposure to computers before taking this course. The prepared student will have experience with email, World Wide Web use, and basic word processing. Note that this course will not necessarily be taken during a student’s first semester in college. Students should complete any remedial work (generally identified as “developmental studies” or “learning support” coursework) in mathematics or language arts before students can begin this course sequence. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CS 102B: Computing Sciences II Within this course structured data types are introduced into the curriculum. Arrays and records are described both as programming constructs and a method for the presentation of data organization in memory. Also, numeric representation in memory is covered. This course forms a foundation for formal object design along with a discussion of object-oriented theory. Topics include: Basic structured data types, object-oriented programming concepts, programming skills in the context of operating systems, information management, and client-server computing environments. Prerequisite: CS 101B Corequisite: CS 105 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the second semester of a breadth-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101B-102B-103B. Students should take this course in parallel with the first discrete mathematics course, CS 105, for majors in the computing sciences to ensure coverage of the appropriate mathematical foundations of computer science along with the applications of those topics. There are two important considerations in the design of a breadth-first introduction to computer science. The first is to treat discrete mathematics not as a separate and unrelated subject, but as a fully integrated component of the course. By doing so, students will better understand and appreciate the importance of discrete mathematics to our discipline. For example, Boolean logic could be introduced during a discussion of programming language operators, counting methods could be presented during a discussion of the efficiency of iterative algorithms, while recurrence relations are a natural way to study the performance of recursive algorithms. The goal is for students to be introduced to mathematical concepts within the context of their use in solving important computing problems. The second point is that the many disparate topics typically found in a breadth-first approach must be tied together into an integrated whole. Students must not see the course as a collection of interesting but unrelated topics in a “if this is Tuesday it must be computer organization” style. They should instead develop an appreciation for the important relationships among the major subfields of computer science. This goal can be achieved by demonstrating how each of the course topics utilizes earlier ideas and builds on them to produce newer and more powerful abstractions. This type of “spiral” implementation, which reinforces, emphasizes, and builds on previous concepts, is an important aspect to the success of a breadth-first approach. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CS 103B: Computing Sciences III The primary programming skills developed in this course are pointers and the concept of recursion. A limited discussion of linked lists may be necessary to properly anchor this material. Formal algorithm analysis fundamentals are also appropriate for introduction at this point, though some informal discussions of efficiency have probably occurred in previous discussions of algorithm development. The student should be exposed to time efficiency in the context of big O notation. Topics include: Advanced high-level language programming, basic assembly language skills, computer architecture, network-centered computing, and artificial intelligence. Prerequisite: CS 102B Corequisite: CS 106 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course represents the third and final semester of a breadth-first introductory track that covers fundamental programming concepts in three semesters. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. In terms of the curriculum, students should be able to move on to more advanced computer science courses after taking course sequence CS101B-102B-103B. This third computer science course should be taken in parallel with the second discrete mathematics course, CS 106, to ensure that the appropriate mathematical foundations of computer science are covered along with the applications of those topics. The intent of this introductory course will be to contain an integrated laboratory component. The lab component provides the important hands-on programming experience that is vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.5 Mathematics CoursesStudents should complete a two-course discrete math sequence, as outlined below. The learning objectives associated with discrete mathematics support this degree program. A mathematics department or a computing department (or jointly) should deliver the courses with that intent. This course introduces the foundations of discrete mathematics as they apply to computer science, focusing on providing a solid theoretical foundation for further work. Topics include functions, relations, sets, simple proof techniques, Boolean algebra, propositional logic, digital logic, elementary number theory, and the fundamentals of counting. Prerequisites: Mathematical preparation sufficient to qualify for precalculus at the college level. Corequisite: CS102 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: The Discrete Structures (DS) material is divided into two courses. CS105 covers the first half of the material followed by CS106, which completes the topic coverage. Although the principal focus is discrete mathematics, the course is likely to be more successful if it highlights applications whose solutions require proof, logic, and counting. CS 106: Discrete Structures II This course continues the discussion of discrete mathematics introduced in CS 105. Topics in the second course include predicate logic, recurrence relations, graphs, trees, matrices, computational complexity, elementary computability, and discrete probability. Prerequisite: CS 105 Corequisite: CS 103 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This implementation of the Discrete Structures area (DS) divides the material into two courses: CS105 and CS106. Like CS 105, CS 106 introduces mathematical topics in the context of applications that require those concepts as tools. For this course, likely applications include transportation network problems (such as the traveling salesperson problem) and resource allocation. Matrices have computing applications in many areas, including inventory control, cost analysis, and data analysis. The unit on matrices introduces basic terminology, the operations of addition, scalar and matrix multiplication, the transpose and inverse, and 2x2 and 3x3 determinants. 3.6 ElectivesFour career-enhancement electives are detailed in this section. Students are best served by completing one of the three-course sequences CS101, CS102, and CS103, along with career-enhancement electives to provide greater depth in an application area of computing. The local institution should decide which courses are most appropriate, depending on the needs of local industries, requirements of transfer institutions, expertise of the faculty, and availability of hardware and software. Students will develop a reasonable level of understanding in the various subject areas that define the discipline, as well as develop an appreciation for the interrelationships among them. With one or more of these additional electives, students should be better prepared to either successfully transfer to a bachelor’s degree program or directly enter the workforce in computing. Elective: Introduction to Web-Centric Computing This course introduces students to the World Wide Web environment and Web scripting and management. Topics include: security, privacy, HTML scripting, multimedia, network operating systems, networking protocols, databases, compression and decompression. Students will program using a scripting language, such as JavaScript. Prerequisite: Mathematical preparation sufficient to qualify for precalculus at the college level. Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This elective course could contain an integrated laboratory component using a multimedia HTML editor and server such as Macromedia Dreamweaver and ColdFusion along with a database such as Microsoft Access. The laboratory component provides an important hands-on experience vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. Topics and experiments that could be included in a laboratory component are:
Elective: Net-Centric Operating Systems This course introduces the fundamentals of operating systems design and implementation. Topics include an overview of the components of an operating system, mutual exclusion and synchronization, implementation of processes, scheduling algorithms, memory management, and file systems. It introduces the structured, implementation, and the theoretical underpinnings of computer networking and the applications enabled by that technology. Prerequisite: CS 102 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This elective course could contain an integrated laboratory component using a recent version of Linux, Unix, or Microsoft Windows operating systems and the Java programming language. Emphasis should be placed on the built-in networking and security capabilities of modern operating systems. Simple and secure network socket scripting can be accomplished with built-in methods from the Java networking class. The laboratory component provides an important hands-on experience vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. Topics and experiments that could be included in a laboratory component are:
Elective: Computer Organization and Architecture Topics include: Basic concepts of computer organization and architecture; machine language principles; computer memory organization; I/O fundamentals; and basic operating system concepts and functionality including task scheduling and memory management. Prerequisite: CS 103 Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This elective course could contain an integrated laboratory component that provides an important hands-on experience vital for beginning computer science students. The forty (40) total hours listed above are considered “lecture” hours and typically two (2) hours of lab equates to one (1) hour of lecture. Topics and experiments that could be included in a laboratory component are:
Elective: Hardware Fundamentals The topics are centered around a hardware-oriented introduction to the computer, beginning with logic and its implementation in logic gates, and moving up the conceptual hierarchy through assembly language in preparation for teaching a higher-level language. This course contains hands on lab exercises to provide the student with an introduction to the hardware components within a microcomputer, including a lab component to build a microcomputer. Prerequisite: Mathematical preparation sufficient to qualify for precalculus at the college level. Syllabus:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Notes: This course is an introductory hardware oriented course, which is not designed as a transferable course in either Assembly Language or Architecture.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AcknowledgementsTask Force MembersThe ACM Two-Year College Education Committee gratefully acknowledges the outstanding work done by the following Task Force members in the development of this report.
Special Thanks The ACM Two-Year College Education Committee would like to thank Carl K. Chang (Vice-President, IEEE-CS Education Activities Board) and Peter J. Denning (Chair, ACM Education Board) for their support of this undertaking. Special appreciation is also expressed to the IEEE-CS/ACM CS2001 Steering Committee - especially Eric Roberts, Russell Shackelford and Pradip Srimani - for their generous cooperation, collaboration and support in the development of this document. Appreciation is also expressed to John Impagliazzo for his valuable assistance in editing the final document. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BibliographyAssociation for Computing Machinery Two-Year College Computing Curricula Task Force, Computing Curricula Guidelines for Associate-Degree Programs: Computing Sciences, ACM Press (1993). ACM Two-Year College Education Committee, Guidelines for Associate Degree Programs to Support Computing in a Networked Environment, 2000. ACM/IEEE-CS Joint Curriculum Task Force, Computing Curricula 1991, ACM Press and IEEE Computer Society Press (1991). IEEE-CS/ACM CC2001 Task Force, Computing Curricula 2001 Final Draft - December 15, 2001, http://www.computer.org/education/cc2001/final/index.htm Bloom, Benjamin S., The Taxonomy of Educational Objectives: Classification of Educational Goals. Handbook I: The Cognitive Domain, McKay Press, New York (1956). Davis, Gorgone, Couger, Feinstein, and Longnecker, IS'97 model curriculum and guidelines for undergraduate degree programs in information systems, Association of Information Technology Professionals, (1997). Freeman and Aspray, The Supply of Information Technology Workers in the United States, Computing Research Association, NSF grant EIA 9812240 (1999). National Science Foundation Advisory Committee, Shaping the Future: New Expectations for Undergraduate Education in Science, Mathematics, Engineering and Technology, NSF (1999). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Appendix A. Taxonomy of Learning ProcessesTable A.1 is an adaptation of Bloom’s Taxonomy. It shows the taxonomy levels in ascending order with a definition for each level. The table also includes verbs that may be useful in the design of course activities. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table A.1 - Bloom’s Taxonomy, Modified
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||