Ramapo College  Logo





Loading...

About Computer Science Major

Mission
Computer Science is the study of the representation, storage, and transformation of information.  As both an academic and career oriented discipline, the courses in the major are taught in a manner which encourages students to develop professional competence, and acquire intellectual maturity and curiosity; establishing a long-term commitment to keep current.

Ramapo College Computer Science graduates have available to them a broad range of career opportunities in business, government, and academia. Our recent graduates have established careers in software development, project management, research, financial research, marketing, database development and administration, systems administration, quality assurance, education, management, consulting and sales. Many of our students continue on to graduate school, but because of the nature of the field, this is usually part-time).

The impact of computers on society is pervasive and sometimes invasive.  We consider it the responsibility of the major to discuss the impacts of computers on society and the ethical responsibilities of practitioners. 

Program Goals
Students graduating from the Computer Science Major should have gained:

  1. The knowledge, skills and tools to pursue a career in Computer Science.
  2. The mathematical background to serve as a foundation for continuing.
  3. An understanding of the theoretical foundation and breadth of Computer Science, enabling students to continue to learn and to pursue graduate.
  4. An appreciation for the impact of computers on society and the ethical and moral responsibilities of its practitioners. 
  5. The ability to effectively communicate both in writing and orally.
  6. This includes teamwork skills.

Student Learning Outcomes
In order to achieve the goals of the major, we have established the following set of learning outcomes.

  1. Program effectively in an object oriented language such as C++
    (Computer Science I and in the majority of subsequent courses).
  2. Have an understanding of the underlying architecture of the digital computer.
    CMPS 220 Assembly Language Programming introduces architecture concepts which are reinforced in subsequent courses.
  3. Understand the algorithms and data structures that underlie all software development.
    CMPS 231 Data Structures introduces these concepts to be reinforced by almost every subsequent course.
  4. Understand the principles and design issues of operating systems.
    Operating systems provide the environment in which software is developed.  CMPS 311 Operating Systems introduces the material refined by courses in specific operating systems.
  5. Able to work effectively in the UNIX and Windows environments.
    These are the two most widely used operating systems.  The students get exposed to these within their course work followed by detail study in advanced courses.
  6. Understand the different paradigms on which programming languages are based and be exposed to at least one language from each model.
    The course CMPS 366 Organization of Programming Languages introduces the theory and provides exposure to languages within each paradigm.
  7. An understanding of practices in industry. To be able to design, implement, test, and document large programming projects, and use software development tools.
    The course CMPS 361 Software Design prepares students to do exactly this.  It is reinforced by CMPS 450 Senior Project where students develop a major piece of software.
  8. Have a sufficient background in computer science theory and mathematics to be able to read the literature and pursue graduate and lifelong work in computer science.
    MATH 121 Calculus I, MATH 237 Discrete Structure and two courses that require MATH 121 as a prerequisite.  Computer Science is presented in the core courses and enriched through the upper level courses.
  9. Demonstrate effective communication and presentation skills.
    Courses like INTD 230 Computers and Society and CMPS 450 provide their students with the opportunity to develop their writing skills.  Both CMPS 361 and CMPS 450 provide at least two opportunities to make extended oral presentation.  CMPS 361 also provides experience with working in a team environment.
  10. Demonstrate competence in a number of areas in Computer Science.
    Every student in the Computer Science major must take 7 electives from a wide variety of courses.  Besides providing an opportunity to customize their degrees, the students are exposed to a diversity of areas in Computer Science.
  11. Recognize the impacts of computers on society and the responsibilities expected of Computer Science practitioners.
    This is the purpose of the course INTD 230 Computers and Society.

 Program Assessment Methods
As may be seen in the discussion of outcomes, each outcome usually has a set of courses in which they are assessed.  The results are discussed at our convening group meetings. Additionally, we have the following assessment tools:

  1. The course CMPS 450 – Senior Project.  This is our primary vehicle for assessing the major.  It measures virtually every outcome listed above.  The course will be discussed later in this document.
  2. The alumni survey.  Every 5 years we survey our alumni to get their retrospective view on their education.

The Senior Project
The course CMPS 450 Senior Project is the Capstone course for the Computer Science Major.  Every student who graduates from the major must complete this course.  The Senior Project is an excellent tool to measure the outcomes of the Computer Science Major.    A student has to have achieved almost every goal listed above in order to successfully complete this course.

Each student in the course must develop a substantial piece of software.  The following are some aspects of the course: 

  1. The student is required to find and define a project.  This often involves considerable library research.  The project must be of sufficient complexity that the student will exercise most of the knowledge that he/she has gained from the major.  The instructor is the arbitrator of the level of complexity.
  2. The student makes an initial oral presentation of the project.  This is a definition of the project and a discussion of some of the issues in implementing the project.
  3. A specifications document must be written.  This is treated as a contract.  The student must fulfill this contract in order to pass the course.  There are no exceptions to this policy.
  4. It is the student’s responsibility to research his/her project.  Virtually all projects require the student to learn additional material and develop new skills.
  5. The student develops a design, which will allow him/her to develop a program to meet the requirements document.  In that the projects have a high degree of complexity, a weak design will almost guarantee that the project will not be completed.  The design requires an extensive knowledge of the data structures and algorithms that the student has learned during his/her time in the major. 
  6. The project must be implemented in an object-oriented language.  Currently, C++, C# or Java are the only languages that may be used to implement the project.  The implementation must be of a professional level.  It must be capable of meeting coding standards.  A professional coding standard is distributed to the class.
  7. The program must be debugged and fully tested.  There is no way that this can be accomplished without the use of software development tools.
  8. At the end of the course, the student must orally present his/her design to the students in the course and the Computer Science faculty.
  9. The student is required to submit a written report.  This report fully documents the projects.  With the source code included, these reports are usually between 100 and 200 pages.  There was actually one report that consisted of 3000 pages of documentation and the program.

It is clear from the above list that the very fact that the student has completed the Senior Projects course is an indication that the goals of the major have been met for that student.

The course is taught once a year in the Spring Semester.  Every student must pass the Senior Projects course in order to graduate.  For the students, the course ties together a lot of the material that they have learned.  It also provides the student with the confidence that she/he can learn without supervision.

For the major, the Senior Project keeps quality of its graduates high.  Students, who feel that they cannot develop a substantial piece of software, will usually switch majors before they are seniors.

The course has been very helpful to our students when they go on interviews.  It is very impressive to interviewers to have our graduates discuss the substantial software that they have developed.

To gain a perspective on the level of the projects, the following is a list of some of the projects that have been done by our students in recent years.  It will be clear from this list that in order to complete the Senior Projects course, the student must have met all of the goals of the major. 

All recent projects are on file in the convener’s office. 

Examples of some of the past projects
Over the 25 years that we have been requiring the Senior Project, there have been a lot of interesting efforts.  The following is a sampling. 

  1. A PC Paint clone.  This is the implementation of a rather large subset of the PC Paint product.
  2. A prolog interpreter.  Prolog is a language used in artificial intelligence.
  3. An expert systems engine.  This is a framework from which expert systems may be developed.  The student used this engine to implement a “Plant Doctor”.
  4. A chat room.  This is a full multi-user chat room which includes:
    1. A GUI interface.
    2. Support for a large number of users.
    3. Security.
    4. Personal messages.
  5. An emulator for the Nintendo 64 gaming machine.  It was good to see Mario again. J  This was a very large project.  I had warned the student against doing it.  He did have to take an incomplete, but he did eventually finish the project.  (I did check the Internet to make sure that the code he developed was his own.)
  6. First-person shooter games.  Students love to write these.  For example, a few years ago, we had a tank commander game and a wizard game.  The games can be quite complex with AI used to control the enemies and network control for multiplayer.
  7. The simulation of cancer growth using parallel computations on a distributed system of computers.  This student had studied the problem at Los Alamos in an intern program. A rather nice email client.  It uses MS SQL server as a backend for the product.  This was done in managed C++.
  8. A rather complete clone of Excel.
  9. A three dimensional pool game.  There was a lot of physics in this project.
  10. Developed a tool to graphically view historical stock market data by harvesting it from the net and recording in within a SQL database.
  11. Lots of compilers and interpreters have been developed for a variety of programming languages
  12. A C++ Development Environment for UNIX using Java.
  13. Conference tool that allows multiple people at diverse locations to share views of their computer desktops, and interact. 

Sample Schedule
There are many possible course sequences that would allow a student to satisfy the requirements for the Computer Science Major.  The following is a sample schedule.  All courses are 4 credits.

 

Fall

Spring

Freshman

ENGL 180   College English 
INTD 101    Freshman Seminar
CMPS 147    Computer Science I
MATH 110   Precalculus

BADM 115  Business Perspectives
     or SOSC 101     Social Issues
HIST 101 through 102 Pick one.
MATH 237    Discrete Structures
CMPS 148     Computer Science II

Sophomore

AIID  201     Readings in Humanities
CMPS 231    Data Structures
CMPS 220    Assem Lang Prog
MATH 121   Calculus I

CMPS 311    Operating Systems
CMPS 361    Software Design   
MATH xxx   Math Elective
GE elective -    INTERCULTURAL NORTH AMERICA CATEGORY

Junior

CMPS 366    Org of Prog Lang
CMPS  xxx   Comp Sci Elective
CMPS  xxx   Comp Sci Elective
MATH xxx   Math Elective

CMPS  xxx   Comp Sci Elective
CMPS  xxx   Comp Sci Elective
GE elective - INTERNATIONAL ISSUES
CMPS     147 Computers and Society

Senior

CMPS  xxx   Comp Sci Elective
CMPS  xxx   Comp Sci Elective
GE Elective - TOPICS ARTS AND HUMANITIES CATEGORY or TOPICS SOCIAL SCIENCE
Free elective

CMPS  xxx   Comp Sci Elective
CMPS 450    Senior Project
Free Electives

 

 

[ return to top ]


Ramapo College of New Jersey • 505 Ramapo Valley Road • Mahwah, NJ 07430 • 201-684-7500
http://www.ramapo.edu/