450 Computer Science Building Department of Computer Science
Computer Science...
Transcript of Computer Science...
Page 1 of 20
Advising and Pre-Registration Notes and Information
Computer Science Major
October 8, 2018
Table of Contents:
Capstone Project: CSC 520 And CSC 521
Computer Science Major Listserv
Computer Science Major Courses & Prerequisites
Course Dependency Diagram
Degree Map
General Advising Notes
Languages Used in Specific Courses
Math Requirements And Math Minor
Matriculation Requirements And Options
Option Sequences
Planned Offerings Spring 2019 through Fall 2022
Second Programming Language Requirement
Support Courses
Year-by-Year Schedule: Computer Science Degree Map
Note: detailed course descriptions for all CSC courses can be found in the Computer Science Department
website at http://cs.salemstate.edu/dept/index.php?page=184.
Page 2 of 20
Computer Science Department
Planned Computer Science major (CSC-prefixed) regularly-scheduled course offerings
Spring 2019 through Fall 2022
Table Legend
bold black == CS major required course; bold colored == component of option sequence (two courses of same
color == an option sequence); italics == course offered every other year); struck through == cancelled offering
Required Courses Option Courses Elective Courses
Fall 2018 CSC 105(2), CSC 110(2), CSC 115, CSC 260, CSC 381,
CSC 520, CSC 521, PHS 205
CSC 345, CSC 246,
CSC 351, CSC 435 CSC 278
Spring 2019 CSC 105, CSC 110, CSC 115(2),
CSC 260, CSC 295, CSC 300, CSC 520, CSC 521
CSC 263, CSC315A,
CSC 340 CSC 235,
CSC 376
Summer 2019 CSC 105, CSC 110, occasionally CSC 260
Fall 2019 CSC 105(2), CSC 110(2), CSC 115, CSC 260, CSC 381,
CSC 520, CSC 521, PHS 205
CSC 351, CSC 425,
CSC 475, CSC 485 CSC 279
Spring 2020 CSC 105, CSC 110, CSC 115(2),
CSC 260, CSC 295, CSC 300, CSC 520, CSC 521
CSC 263, CSC 315A,
CSC 325, CSC 340 CSC 212
Summer 2020 CSC 105, CSC 110, occasionally CSC 260
Fall 2020 CSC 105(2), CSC 110(2), CSC 115, CSC 260, CSC 381,
CSC 520, CSC 521, PHS 205
CSC 345, CSC 246,
CSC 351, CSC 435 CSC 278
Spring 2021 CSC 105, CSC 110, CSC 115(2),
CSC 260, CSC 295, CSC 300, CSC 520, CSC 521
CSC 263, CSC315A,
CSC 340 CSC 235,
CSC 376
Summer 2021 CSC 105, CSC 110, occasionally CSC 260
Fall 2021 CSC 105(2), CSC 110(2), CSC 115, CSC 260, CSC 381,
CSC 520, CSC 521, PHS 205
CSC 351, CSC 425,
CSC 475, CSC 485 CSC 279
Spring 2022 CSC 105, CSC 110, CSC 115(2),
CSC 260, CSC 295, CSC 300, CSC 520, CSC 521
CSC 263, CSC 315A,
CSC 325, CSC 340 CSC 212
Fall 2022 CSC 105(2), CSC 110(2), CSC 115, CSC 260, CSC 381,
CSC 520, CSC 521, PHS 205
CSC 345, CSC 246,
CSC 351, CSC 435 CSC 278
Option Sequences (see Option Sequence Changes Fall 2017)
Computation Theory: CSC 400 & CSC 415 (note – this sequence is not scheduled on a regular basis – see
the department chairperson for details and availability)
Computer Graphics and Visualization: choose two from CSC 246, CSC 340, CSC 425
Cyber Physical Systems: CSC 340 plus one from CSC 345, CSC 485
Networking and Cloud Computing: CSC 315A plus one from CSC 435, CSC 445, CSC 475 (note – CSC 445
is not scheduled on a regular basis – see the department chairperson for details and availability)
Software Engineering: CSC 351 plus one from among CSC 263, CSC 325
Page 3 of 20
List of Computer Science major (CSC-prefixed) courses and significant attributes (Courses required within the Computer Science major are indicated in bold typeface. Please see the Computer Science
Department website (cs.salemstate.edu) for complete course description, topic list, bibliography, etc.)
Course Credits Required
Lab Programming
Load Typically
Offered Typical Language(s) /
O.S. / Hardware
CSC 105 Survey of Computer Science 4 minimal Spring & Fall
CSC 110 Software Design and Implementation I 4 heavy Spring & Fall Java
CSC 115 Software Design and Implementation II 4 heavy Spring & Fall Java
CSC 212 Human-Computer Interfaces 4 moderate Spring, even years C#, ASP.NET
CSC 235 Computer Security Basics 3 moderate Spring, odd years
Java, plus some PHP,
MySQL, Linux
scripting
CSC 246 Information Visualization 4 moderate Fall, even years Processing
CSC 260 Data Structures & Algorithms 4 heavy Spring & Fall Java
CSC 263 Database Systems 4 moderate Spring Java, SQL (Oracle
and/or MySQL)
CSC 278 Scripting Techniques 4 heavy Fall, even years
multiple, varies by
semester: e.g.
JavaScript, Python,
PHP, …
CSC 279 C + C++ 4 heavy Fall, odd years C and C++
CSC 295 Computer Architecture & Organization 3 moderate Spring Altera’s Quartus II
and DE2 board
CSC 300 Software Engineering I 4 moderate Spring UML, Java,
Modeling tools CSC 315A Computer Networks and
Data Communications 4 moderate Spring
Python, PHP, HTML,
Linux, Windows
CSC 325 Advanced Programming Techniques 4 heavy Spring, even years C#
CSC 340 Artificial Intelligence 3 moderate Spring variable
CSC 345 Embedded Systems 4 moderate Fall, even years
Hardware Description
Language and Altera’s
Quartus II and DE2
board.
CSC 351 Software Engineering II 4 moderate to
heavy Fall
UML, Java,
Modeling tools
CSC 367 Internship in Computer Science 1-6 variable as needed highly variable
CSC 376 Topics in Computer Science 3 variable sporadic variable
CSC 381 Operating Systems 3 minimal Fall
CSC 400 Compiler Construction 4 heavy sporadic variable
CSC 415 Analysis of Algorithms 3 minimal sporadic
CSC 425 Computer Graphics and Games 4 heavy Fall, odd years Java
CSC 435 Computer and Network Security
Engineering 3 moderate Fall, even years
C / C++, plus some
PHP, MySQL, Linux
scripting
CSC 445 Parallel Processing 4 moderate Sporadic Fortran or C++
CSC 475 Distributed and Cloud Computing 4 moderate Fall, odd years C, Java, Linux,
Windows
CSC 485 Robotics and Computer Vision 4 moderate Fall, odd years MATLAB, C / C++
CSC 490 Theory of Computation 3 minimal sporadic
CSC 520 Computer Science Capstone Project Spec 1 minimal Spring & Fall variable CSC 521 Computer Science Capstone Project 3 heavy Spring & Fall variable (Note: Staffing and enrollment issues may necessitate exceptions to the "typically offered" schedule presented above. The
Computer Science Department makes every effort to keep to the schedule as presented.)
Page 4 of 20
Computer Science Major Courses & Prerequisites
COURSE TITLE PREREQUISITE
CSC 105 Survey Of Computer Science High school algebra I, II; knowledge of Windows, email, and word processing
CSC 110 Software Design/Programming I High school algebra I, II; knowledge of Windows, email, and word processing
CSC 115 Software Design/Programming II CSC 110
CSC 212 Human-Computer Interfaces CSC 115
CSC 235 Computer Security Basics CSC 105 and CSC 110
CSC 246 Information Visualization
One Mathematics course chosen from MAT 108, MAT 110, MAT 120, and MAT
208 and above; plus CSC 150, or equivalent programming experience and permission of Department Chairperson.
CSC 260 Data Structures And Algorithms CSC 105 and CSC 115
CSC 263 Database Systems CSC 115
CSC 278 Scripting Techniques CSC 115
CSC 279 C + C++ CSC 105 and CSC 115
CSC 295 Computer Architecture And Organization CSC 105 and CSC 115 and PHS 205
CSC 300 Software Engineering I CSC 260
CSC 315A Computer Networks And Data Communications CSC 260
CSC 325 Advanced Programming Techniques CSC 260
CSC 340 Artificial Intelligence CSC 105 and CSC 260
CSC 345 Embedded Systems (Fall 2018 initial offering) CSC 295
CSC 351 Software Engineering II CSC 300; CSC 263 recommended
CSC 367 Internship in Computer Science CSC 260 and permission of Department Chairperson; other prerequisites vary with
the project
CSC 376 Topics In Computer Science Topics and therefore Prerequisites vary
CSC 381 Operating System Principles CSC 260
CSC 400 Theory of Computation CSC 260 and MAT 214A
CSC 415 Analysis Of Algorithms CSC 260 and MAT 214A
CSC 425 Computer Graphics and Games MAT 108, or MAT 150, or any MAT course numbered 208 or above, plus CSC 260
CSC 435 Computer And Network Security CSC 315A; CSC 279 strongly recommended
CSC 445 Parallel Processing CSC 115 and CSC 295
CSC 475 Distributed and Cloud Computing Pre- or Co-requisite: CSC 381
CSC 485 Robotics And Computer Vision CSC 260; Pre- or Co-requisite: MAT 221; CSC 279 strongly recommended
CSC 490 Compiler Construction CSC 260
CSC 498 Project Specification & Design Practicum CSC 300 and permission of Department Chairperson
CSC 500 Directed Study In Computer Science I CSC 498 and permission of Department Chairperson; other prerequisites vary with
the project
CSC 501 Directed Study In Computer Science II CSC 498 and permission of Department Chairperson; other prerequisites vary with
the project
CSC 520 Computer Science Capstone Project
Specification CSC 300 and permission of Department Chairperson
CSC 521 Computer Science Capstone Project CSC 520 and permission of Department Chairperson; other prerequisites vary
with the project
PHS 205 Digital Circuit Design MAT 110 or equivalent
Note: detailed course information documents for all CSC courses can be found on the department website
at http://cs.salemstate.edu/dept/index.php?page=184.
Page 5 of 20
Anticipated and Recent Computer Science major Curriculum Changes and Notes
Computer Science major curriculum changes that took effect September 2018
Deletion of CSC 223 and CSC 230
New course CSC 345 Embedded Systems
o Prerequisite: CSC 295
o Three lecture hours plus a scheduled three hour lab
o CSC 345 is an optional course in the Cyber Physical Systems option sequence
o Details can be found at http://cs.salemstate.edu/dept/index.php?page=184.
Prerequisites for CSC 485 will change:
o Former prerequisite statement: Prerequisite: CSC 260; CSC 279 strongly recommended.
o New prerequisite statement: Pre- or Co-requisite: MAT 221; Prerequisite: CSC 260; Strongly
recommended: CSC 279.
Computer Science major curriculum changes that took effect September 2017
Deletion of CSC 101 and revision of CSC 105
o Careful review and assessment of the material covered in CSC 101, CSC 105, and PHS 205
determined that there was too much overlap among these three courses. Elimination of
redundant or excessive coverage of certain topics allow the major to delete CSC 101 from the
list of required CS major courses, and to redesign CSC 105 to address essential materials from
CSC 101 and 105.
For all CS majors operating under the Fall 2016 flowsheet or earlier, CSC 101 will no
longer be offered. You can take any CSC-prefixed course above CSC 115 as a substitution
for a CSC 101 or CSC 200A requirement: you will need to request that the department
chair issue a substitution memo to the Registrar’s Office, and will need to provide your
SSU ID and flowsheet year when doing so.
For CS majors operating under the Fall 2017 flowsheet, CSC 101 does not appear on your
CS major flowsheet; the three credits previously required by CSC 101 are replaced by a
third CS major elective.
Deletion of CSC 273 and CSC 311, creation of CSC 279 as a combination of 273 and 311.
o Review of the course content of CSC 273 and CSC 311, coupled with analysis of industry
trends, led to the decision to eliminate separate courses for C (CSC 273) and C++ (CSC 311)
and to instead offer a single course (CSC 279) that covers both languages in a single semester
neither CSC 311 or CSC 273 will be offered.
The initial offering of CSC 279 was Fall 2017; the course will be offered bi-annually
thereafter
o Note that the list of 2nd language courses therefore changed to CSC 278, CSC 279, and CSC
325
Students who have previously taken CSC 273 or CSC 311 will be allowed to use them to
satisfy this requirement
o Details regarding CSC 279 (course description, course goals and objectives, etc.) can be found
at http://cs.salemstate.edu/dept/index.php?page=184.
Changes in course offering pattern
o Among the CSC required courses, CSC 300 will be offered only during the Spring semester
(previously offered Fall and Spring semesters). All other CSC required courses will continue
to be offered based on their recent scheduling pattern.
o Significant changes have been made to anticipated scheduling patterns for most option
sequence courses and most CS major elective courses. Please refer to the Planned Offerings
Page 6 of 20
table for details.
Revisions to option sequences:
o Analysis of industry trends and enrollment patterns led to the decision to reorganize the
current set of Option Sequence choices, with the changes taking effect Fall 2017 – the revised
set of choices should allow students more flexibility in completing a sequence, and should also
allow the CS major to run more of its electives on a more stable and predictable basis.
o Note that declaring an option sequence does not guarantee that you will be able to complete
the sequence “in a timely manner” – option-sequence course availability is based on when the
courses come up in the projected offerings schedule coupled with course demand. It is very
important that you work with your advisor in selecting an option sequence and in developing a
backup plan.
Option Sequences
Computation Theory: CSC 400 & CSC 415 (note – this sequence is not scheduled on a regular
basis – see the department chairperson for details and availability)
Computer Graphics and Visualization: choose two from CSC 246, CSC 340, CSC 425
Cyber Physical Systems: CSC 340 plus one from CSC 345, CSC 485
Networking and Cloud Computing: CSC 315A plus one from CSC 435, CSC 445, CSC 475 (note –
CSC 445 is not scheduled on a regular basis – see the department chairperson for details and
availability)
Software Engineering: CSC 351 plus one from among CSC 263, CSC 325
o CS majors who have declared an Option Sequence prior to Fall 2017 may need to work with
their advisor and the department chairperson to work out any substitutions that may be
necessary. Students operating under the old (pre-2017) Option Sequence requirements will
require a substitution memo from the department chair to the Registrar’s Office if they need a
substitution for a specific course (see the Paths Forward table for details).
o CS majors who failed to declare an Option Sequence by May 10, 2017 will select from the list
of options above, and will require a substitution memo from the chair of the department.
Paths Forward for Pre-2017 Option Sequences
AI & Robotics: CSC 340 & CSC 485 Should be able to complete sequence
Computer Graphics and Visualization: CSC 246 &
CSC 425 Should be able to complete sequence
Computation Theory: CSC 400 & CSC 415 May be able to complete sequence
Computer Networking & Security: CSC 315A &
CSC 435 Should be able to complete sequence
Embedded Systems: CSC 223 & CSC 230 CSC 485 and CSC 345 – will require
substitution memo from chair
Distributed and Cloud Computing: CSC 315A &
CSC 475 Should be able to complete sequence
Parallel Computing: CSC 445 & CSC 475 May be able to complete sequence
Object Oriented Programming: CSC 311 & CSC
325
CSC 279 and CSC 325 – will require
substitution memo from chair
Software Engineering: CSC 263 & CSC 351 Should be able to complete sequence
The deletion of CSC 101, CSC 273, and CSC 311 led to prerequisite changes for several courses.
Page 7 of 20
These changes are summarized here:
Course Current Prerequisite(s) Revised Prerequisite(s) CSC 235 CSC 101 and CSC 110 CSC 105 and CSC 110
CSC 260 CSC 101 and CSC 115 CSC 105 and CSC 115
CSC 435 CSC 315A; CSC 273 or CSC 311
strongly recommended CSC 315A; CSC 279 strongly recommended
CSC 485 CSC 260; CSC 273 or CSC 311
strongly recommended CSC 260; CSC 279 strongly recommended
Computer Science major curriculum changes that took effect September 2016
A significant number of computer science (CSC-prefixed) courses were renumbered effective Fall
2016. The renumbering was implemented so that CSC course numbers would more accurately
reflect approximately when they might be taken in the context of a four-year curriculum plan.
The course renumberings were implemented in such a way that SSU's Degree Tracker system can
automatically recognize equivalencies. As an example, Operating Systems was numbered CSC
280 through Spring 2016, but is now numbered CSC 381. Students whose flowsheets require CSC
280 can register for CSC 381 and Degree Tracker will automatically recognize CSC 381 as
satisfying their CSC 280 requirement.
It bears explicitly mentioning that functionally no flowsheet requirements changed as a result of
these course renumberings. Some courses have different numbers, but they have the same title and
cover the same material.
Because renumbered courses have been intentionally implemented to be academically equivalent
to their originally-numbered courses, it is important to note that:
o To retake an "old number" course, simple register for the equivalent "new number" course –
Degree Tracker will handle the equivalency details.
o Taking a "new number" course when you have already taken the equivalent "old number"
version of the course does not earn you additional credits!
Taking any course automatically causes Degree Tracker to check if registration would be
classified as a retake and if so Degree Tracker should warn you that you are retaking the
course. If you attempt to register for a CSC course and are informed that it would be a
retake, and you do not understand why you are seeing this information, please:
(a) take a screenshot of the information, then
(b) email your academic advisor, explain what you are attempting to do and why you are
attempting to do it, and include the screenshot.
If you are not sure if a CSC course you are thinking about registering for is equivalent to
another CSC course, check with your academic advisor in Computer Science before you
register!
General advising notes to CSC majors:
☼ Master Schedule of Spring 2019 courses
Once the Spring 2019 Day Master Schedule is published, a PDF will be available at
http://cs.salemstate.edu/dept/index.php?page=6. Note that this document is "fixed in time" – it
does not and will not reflect schedule adjustments made after publication, e.g. adjustments due to
cancellations, new sections being created, and/or changes to room, professor, and meeting time.
As a document to use now (during the formal academic advising period) for planning your Spring
Page 8 of 20
2019 schedule, it's an excellent tool. When it comes to actually registering for classes or if you're
looking to change your schedule after you register for classes, be sure to use Navigator to check
for the latest information on courses.
☼ Advising and Registration dates for Spring 2019 Day courses
Advising Dates for DAY students: October 15 – November 1
Sign up for an appointment with your Computer Science Department faculty advisor –
appointments are available on a "first come, first served" basis. Detailed instructions for signing
up are posted on the bulletin board to the left of MH 209. Simple instructions: go to
http://cs.salemstate.edu/advising/, click Advisee, use your SSU ID and SSU email address to log
in, and then click on Available Appointments to view available appointments and select one.
NOTE: Students who do not initiate registration until after November 26, 2018 will be charged a
late registration fee of $25.
Registration Dates: DAY student pre-registration begins at 7:00 am each day:
Senior Registration: November 1, Priority seniors 7:00 a.m., all seniors 4:30 p.m.
Junior Registration: November 2, Priority juniors 7:00 a.m., all juniors 4:30 p.m.
Sophomore Registration: November 5, Priority sophomores 7:00 a.m., all sophomores 4:30 p.m.
Freshman Registration: November 6, Priority freshmen 7:00 a.m., all freshmen 4:30 p.m.
From the Registrar’s Office: Be advised that priority registration appointments for the Spring 2019
registration process have been assigned within the student’s class year assignment. All priority
appointments will begin at 7:00 am on the day each class will register. This policy has been
enacted for several important reasons, including the facilitation of academic progress and equity
for all of our students according to their academic plans of study and to more effectively manage
and distribute the load of students registering each of the first four days of registration. Students
without priority appointments will register at 4:30 p.m. on their assigned class registration day.
Note: Open Enrollment for matriculated SCPS students (School of Continuing and Professional
Studies, i.e. evening) students in day division classes begins on November 26.
☼ Advising and Registration dates for SCPS Spring and Wintersession 2018 evening courses
Registration for Spring and Wintersession 2019 SCPS classes begins October 31 for currently-
matriculated students and for all others on November 5.
Note that in order to register for Spring 2019 courses you need a registration
PIN, and the only way to get that PIN is to meet with your academic advisor – it
is a violation of SSU and CS major advising policy to give a student their PIN if
advising hasn't taken place.
Page 9 of 20
☼ Faculty advisor contact information
Bo Hatfield (chair) [email protected] MH 207B 978.542.6979
Joe Kasprzyk [email protected] MH 208B 978.542.6978
Komalpreet Kaur [email protected] MH 208C 978.542.2833
Sotirios Kentros [email protected] MH 207A 978.542.2832
Beifang Yi [email protected] MH 211A 978.542.7246
Lakshmidevi Sreeramareddy [email protected] MH 207D 978.542.2379
Manish Wadhwa [email protected] MH 211B 978.542.2627
☼ Account “Holds” and “Limits” and their effect on registering for courses:
SSU will place registration holds on students for a variety of reasons, some of which are:
more than 30 credits have been completed but one or more Level I Competency-based skills
requirements (Mathematics or Reading) have not been satisfied
a bill has not been paid
proof of health insurance and/or vaccinations has not been provided to SSU
being on probation and failing to have met with Academic Advising well prior to registering
for courses
SSU will limit the number of credits for which a student can register for a number of reasons, some of
which are:
academic probation
participation in certain support programs
Students with a registration hold will not be able to register for any courses until they have satisfied
the conditions necessary to remove all holds; students with limits are able to register, but only under
the constraints of the limits. It is therefore critical that students use Navigator ASAP to see if any
holds or limits have been put in place: if any holds exist, it is the student’s responsibility to rectify
the situation, and if at all possible to rectify it before registration begins. Note that a faculty advisor
can determine if a hold exists, but not its cause – the student must log into Navigator to determine the
specifics. If you have a hold and are not sure how to proceed, consult with your academic advisor.
IMPORTANT: if you are a DAY student, note that SPCS (evening,
DCE, Continuing Education, Summer) courses require the payment of
separate (additional) tuition and fees, the only exception being
evening course sections that are co-listed with Day course sections
Page 10 of 20
Note that the existence of a hold does not AND SHOULD NOT prevent you from meeting
with your academic advisor! The existence of a hold prevents registration – advising
can and should take place during the scheduled period, otherwise once the hold is
resolved, you will still be unable to register because you will not have been advised
and therefore not have received your registration access PIN.
☼ Restriction on the number of retakes for a course: Matriculated undergraduate students are
allowed to attempt a specific course a total of three times, including all attempts and all grades,
including attempts in which the student has a grade of “W,” “I,” or “F.” Students may repeat a
specific course one time without any approval required, but a second repeat (the third attempt) will
require the approval of the Academic Advising Office or the Registrar’s Office prior to registering for
the course. Navigator stops students from being able to register for the course when they try to
register for the third or greater time. Repeats beyond the third attempt are permitted only for
extenuating circumstances and will require an appeal to the Office of Enrollment Management. As
always, once a course is repeated, only the higher grade earned is used to calculate the GPA, and all
attempts will remain on the official transcript.
☼ SSU general education (“gen ed”) requirements: Effective for students admitted to SSU as of Fall
2014, the gen ed requirements (the "left side of the flowsheet") changed very significantly. Details
regarding the changes were publicized in a number of ways via a number of different SSU offices.
The following notes are aimed at students who are currently at SSU and have already declared the
Computer Science major, and are intended as general guidelines:
Students who had already declared a major effective before Fall 2014 can choose to continue
under the requirements of their current flowsheet – that is, you are NOT required to switch to the
new gen ed requirements that went into effect Fall 2014.
Students who had already declared a major effective prior to Fall 2014 can choose to switch to the
requirements of the flowsheet that took effect Fall 2014, or any later flowsheet.
Students who declared a major effective September 2014 through January 2016 operate under the
General Education Transition Model. This model allows students to satisfy gen ed requirements
by taking courses that are designated as being certified a current gen ed category and/or by taking
courses that were certified in certain categories under the old gen ed rules. Details of the General
Education Transition Model are far beyond the scope of this document – see your academic
advisor for details!
Students who declare a major effective Fall 2016 or later will operate under the General Education
Rules that took effect in September 2014 and are not eligible to operate under the Transitional
Model. This means that gen ed requirements can only be satisfied by taking courses that are
certified in a current gen ed category.
Students who declare a major effective Fall 2018 will operate under the General Education Rules
that took effect in September 2014, and in addition must take a course that satisfies the Diversity,
Power Dynamics, and Social Justice (DPDS) general education category.
The details of the changes to the gen ed requirements that took effect on all flowsheets effective
Fall 2014 and later are beyond the scope of this document, but as Computer Science majors there
is something specific to keep in mind:
o Support courses CAN be used to satisfy gen ed requirements in both current and future
flowsheets (so-called “double dipping” – the course receives credit once, but satisfies multiple
Page 11 of 20
flowsheet requirements).
Summary
o If you decided to stay with a pre-2014 flowsheet and you declared the Computer Science
major prior to Fall 2014, the new gen ed requirements do not affect you.
o If you declared the Computer Science major effective September 2014 or later, or switched to
a Fall 2014 or later CS flowsheet, the changes do affect you:
If you are operating under the Fall 2014 or Fall 2015 CS flowsheet, you can make use of
Transitional Model gen ed equivalencies
o If you are operating under the Fall 2016 or later CS flowsheet, you cannot make use of
Transitional Model gen ed equivalencies
☼ Registering for Science courses: Note that many of the science courses that fulfill the Science course
requirements of the Computer Science major are open to only majors in their disciplines for the first
four days of registration. Attempting to register for one of these courses (e.g. GLS 100, BIO 131)
during the first four days of registration is usually problematic because Navigator displays all sections
of these courses as “closed”, which many interpret as “already filled to capacity”. Waiting until the
fifth day of registration usually results in some of the course sections reclassified as “open”. If your
scheduling situation requires an earlier resolution or your targeted course section does not reclassify,
you can contact the chairperson of the host department (Biology (MH 404), Chemistry & Physics
(MH 404), Geology (MH 331)). You must explain that you are a Computer Science major, wish to
enroll in a specific course, and that you have a limited set of courses that satisfy the Science
requirements of the Computer Science major. You may receive an electronic permission to register,
otherwise they will indicate that you should wait until the day after Freshmen registration (the fifth
day of registration) and try then.
☼ General Education (“gen ed”) requirements in the specific context of the Computer Science
major: As indicated above, courses taken outside the major discipline are candidates to "double dip"
and be used to satisfy multiple flowsheet requirements depending on the certifications for a specific
course; in certain very specific circumstances, courses within the major discipline can also "double
dip". "Major discipline" in the context of the Computer Science major includes only CSC-prefixed
courses.
While you can use any courses with the appropriate certifications to satisfy the preceding
requirements, note that using the courses specified above will result in you having additional free
elective credits, thus broadening your selection of potential courses.
ITC 183 Cybersecurity: A Personal and Professional Responsibility is a course offered by the
W-II requirement: automatically satisfied by the required major discipline
course CSC 300
W-III requirement: automatically satisfied by the required major discipline
course CSC 521
QR requirement: automatically satisfied by the required major support course
MAT 147 or MAT 220
SR requirement (two courses): automatically satisfied by the required major
support course "sequence" of two science courses (see your flowsheet for
eligible courses).
Page 12 of 20
Computer Science Department but is not CSC prefixed and thus is not within the "major discipline".
ITC 183 has PGR (Personal Growth and Responsibility) general education certification. Quoting from
the course description, "This course presents a user-level view of computer and network security and
includes discussion of topics you must know to be responsible (personally and professionally)
members of our social environment as individuals and work force participants." (italics added).
Computer Science majors will find that ITC 183 offers a complementary perspective on cyber security
(user-centric vs. the technology-centric perspective of CSC-prefixed security courses) and
simultaneously satisfies a gen ed requirement.
☼ A typical Computer Science course load for students in their first semester as a major will consist of
CSC 105, CSC 110, a Mathematics support course, and two additional courses that address SSU
General Education requirements (the left side of the flow sheet). A detailed semester-by-semester
schedule of suggested courses can be found here.
☼ A typical Computer Science Department course load for students in their second semester as a major
will consist of CSC 115, a Mathematics support course, two additional courses that address SSU
General Education requirements and either CSC 105 (if not taken during the first semester) or an
elective (chosen in consultation with your academic advisor). A detailed semester-by-semester
schedule of suggested courses can be found here.
☼ Transfer students who are newly admitted to the major and bring more than twenty transfer
credits and/or more than twelve Computer Science major (CSC-prefixed) credits with them
should consult with the department chairperson during orientation and/or with their Computer
Science faculty advisor in order to minimize scheduling bottlenecks and to insure appropriate
progress through the major. You can determine who your advisor is via your Navigator
account.
☼ Sophomores should take CSC 260 and PHS 205 in the Fall. CSC 260 is a prerequisite for many CSC
courses numbered above it (and specifically for CSC 300, which is ideally taken in the Spring
semester of the Sophomore year), so it is important that CSC 260 be completed as quickly as is
practical. Note that CSC 260 involves a large amount of programming. PHS 205 is a prerequisite for
CSC 295, which is a required course and which should be taken in the Spring semester of the
Sophomore year. In addition, at least one Math support course should be taken, along with two
additional University General Education courses (one of which should be a lab science course - see
FAILURE TO PLAN FUTURE SEMESTER SCHEDULES BASED ON PROJECTED COURSE
AVAILABILITY IS LIKELY TO RESULT IN SIGNIFICANT DELAYS IN GRADUATION. WHILE THIS
OBSERVATION IS RELEVANT FOR ANY COMPUTER SCIENCE MAJOR, IT IS PARTICULARLY
IMPORTANT FOR TRANSFER STUDENTS WHO BRING A SIGNIFICANT NUMBER OF TRANSFER
CREDITS WITH THEM. THEREFORE, IF YOU RECENTLY TRANSFERRED INTO SSU WITH A
SIGNIFICANT NUMBER OF TRANSFER CREDITS, IT IS VERY IMPORTANT THAT YOU MEET WITH
YOUR ACADEMIC ADVISOR ASAP (DON’T WAIT FOR THE FORMAL ACADEMIC ADVISING
PERIOD!) IN ORDER TO DEVELOP A CUSTOMIZED PLAN FOR WHEN YOU WILL BE
REGISTERING FOR MAJOR COURSES. FAILURE TO DEVELOP SUCH A PLAN MAY RESULT IN
TAKING AN EXTRA SEMESTER OR MORE TO COMPLETE YOUR DEGREE REQUIREMENTS.
Page 13 of 20
your Computer Science major flowsheet for a detailed list of options).
Note that CSC 260 sometimes runs during the summer – if available, students, particularly
transfer students, can take CSC 260 during the summer in order to accelerate their graduation
date and/or to permit upper-level courses to be spread across another semester. Students who
pursue this path should consult with their advisor as to the appropriate replacement for CSC
260 in their Fall Sophomore schedule.
☼ Sophomores should take both CSC 300 and CSC 295 in the Spring; if you can take only one, consult
with your advisor as to which should take precedence. Note that CSC 300 involves significant lab
time and some programming, while CSC 295 does not include a formal lab: the workload of taking
both courses in the same semester should be manageable and provides for the greatest scheduling
flexibility in future semesters. In addition, at least one Math support course should be taken, along
with two University General Education courses (one of which should be a lab science course unless all
three have already been taken). Note that CSC 295 and CSC 300 are both currently offered on a
"spring only" basis.
☼ Students should begin to talk to their advisor about selecting an Option sequence in the semester in
which they take CSC 260, and should have determined their selection no later than the end of the
following semester. Note that most Option sequences involve at least one course that runs only in
alternating years. Early planning and selection of the Option sequence can help to avoid being unable
to complete a preferred Option selection or being forced to complete the preferred choice during the
senior year and therefore making it difficult to incorporate the topic area into the required capstone
project.
☼ The following Option Sequences are generally available (the faculty member(s) with the greatest
involvement is/are listed in parentheses – contact them if you have detailed questions about topics,
course format, etc.).
Note that some of these sequences involve courses that are not scheduled on a regular basis due to
low overall demand – making your interest in a specific Option Sequence known to your academic
advisor early is very important in allowing the department to schedule courses appropriately.
These Option Sequences are available to students regardless of date of matriculation. For
information regarding the content and applicability of a specific Option Sequence, please see your
advisor and/or the faculty member listed next to the Option.
Page 14 of 20
Option Sequence Faculty with greatest
involvement
Computation Theory: CSC 400 & CSC 415 (note – this sequence is not
scheduled on a regular basis – see the department chairperson for details
and availability)
Kentros, Yi
Computer Graphics and Visualization: choose two from CSC 246, CSC
340, CSC 425 Yi
Cyber Physical Systems: CSC 340 plus one from CSC 345, CSC 485 Kaur
Networking and Cloud Computing: CSC 315A plus one from CSC 435,
CSC 445, CSC 475 (note – CSC 445 is not scheduled on a regular basis –
see the department chairperson for details and availability)
Hatfield, Kentros
Software Engineering: CSC 351 plus one from among CSC 263, CSC 325 Kasprzyk
☼ Any course listed as part of an Option Sequence can be used as a major elective, but only if the
course is not from your declared Option Sequence. For example, if you choose the Computer
Networking and Security Option and take CSC 315A and CSC 435, you cannot list either a second
time on your flow sheet as a major elective - you could take CSC 263, CSC 311, CSC 325, CSC 445,
CSC 475, etc. as major elective(s), since they are not part of this specific example choice of option
courses.
☼ All students must take a “second programming language” course (the language introduced in CSC
110, currently Java, is considered the first) - the current choices are CSC 278 (scripting languages),
CSC 279 (C + C++), and CSC 325 (C#). Note that if CSC 311 or CSC 325 is taken as part of an
Option sequence, it can be used to satisfy the "second programming language" requirement, but
do note that credit for the course is received only once.
Note – CSC 273 and CSC 311 were deleted from the list of CS major courses effective Fall
2017, and replaced with CSC 279. Students operating under a CS major flowsheet dated Fall
2016 or earlier and who wish to use CSC 279 to satisfy their “second programming
language” requirement will be required to have the department chair issue a substitution
memo to the Registrar’s Office – the substitution request is automatically granted, but must
be explicitly requested by the student via the Department Chairperson.
☼ Certain courses within the curriculum have a very heavy programming component - scheduling two or
more of these courses in a single semester has a high potential for causing significant problems with
time management. Spreading these courses out to distribute the time load is preferable: if time
constraints or course availability dictates otherwise, students should consult with their advisor about
the most appropriate combinations. Note that, aside from the required CSC 110/115/260 sequence,
most students take no more than two or three out of the remaining heavy programming courses: if you
take CSC 260 during the first semester of your sophomore year, any remaining heavy programming
courses can be spread across the remaining five semesters so that no two need be taken in the same
semester.
Courses with very heavy programming components (required courses are presented in bold
typeface):
CSC 110, CSC 115, CSC 260, CSC 278, CSC 279, CSC 325, CSC 425,
CSC 521, PHS 205.
Page 15 of 20
Courses with moderate programming components (required courses are presented in bold typeface):
CSC 212, CSC 223, CSC 230, CSC 235, CSC 246, CSC 263, CSC 295, CSC 300,
CSC 315A, CSC 340, CSC 345, CSC 351, CSC 435, CSC 445, CSC 475, CSC 485.
Courses that are predominantly theoretical (minimal programming or the programming is logically
simple) (required courses are presented in bold typeface):
CSC 105, CSC 381, CSC 400, CSC 415, CSC 520.
Note - while the amount of programming involved in CSC 521 varies depending on the selected
project, it is usually significant enough to fall into the “very heavy” category.
☼ A number of non-CSC courses are required in the Computer Science major - these are formally
called "Support" courses.
Mathematics (5 courses total):
o MAT 147, MAT 214A, MAT 220, and MAT 221
o one (1) additional MAT course of three or more credits with MAT 220 or MAT 221
as a prerequisite, or another MAT course with permission of the Computer Science
Chairperson
Note that while MAT 218 Introduction to Mathematical Computing has a prerequisite
of MAT 220, MAT 218 is a one-credit course, and therefore may not be used as the
"additional" Mathematics support course.
Science (4 courses total)
o PHS 205
o a two-semester lab sequence, chosen from: BIO 131&132, CHE 130&131, CHE
130&212, PHS 211A&212A, PHS 221&222, GLS 100&102
If you choose either PHS sequence, a Physics minor can be completed by declaring a
Physics minor and taking PHS 311. Note that this minor is declared by filling out a
form available from the Registrar's Office or online and having the form signed by
the Chemistry and Physics Department chairperson.
o one additional Science course, chosen from: BIO 131, CHE 130, CHE 212, GLS 100,
GLS 102, PHS 211A, PHS 221 (note - the “additional” course cannot be part of the
elected two-semester lab science sequence).
Alternatives to the courses in this list must be discussed with your academic advisor
before registering, and a substitution memo must be issued by the department chair to
the Registrar before you register - it is most unwise to assume that an alternative
science course will be automatically approved!
☼ Prior to Fall 2017, Salem State University limited the maximum number of credits within a discipline
The required Mathematics support courses satisfy most of the requirements of a
Mathematics minor (MAT 220, MAT 221, and three additional MAT courses from a list
of MAT 147, MAT 214A, MAT 234, and all MAT courses numbered 300 or higher, with
only one of MAT 214A and MAT 147 being eligible). Taking one additional MAT
course beyond the required support courses will complete a Mathematic minor. Note that
a minor is declared by filling out a form available from the Registrar's Office or online
and having the form signed by the Mathematics Department chairperson.
Page 16 of 20
(in the case of the Computer Science major, CSC-prefixed courses) that can be taken for graduation
credit to 55. Effective Fall 2017, this cap has been eliminated – students are free to take as many
credits “in the discipline” as they wish.
☼ Students who are matriculated in (have formally declared) the Computer Science major may, at their
discretion, request to switch their graduation requirements to those of a flowsheet with a more recent
effective date than the one in effect when they were accepted into the major. For example, a student
who matriculated in September 2015 may request to graduate under the flowsheet in effect in
September 2016, or September 2017, but not September 2014 or earlier. Any student who wishes to
switch to a flowsheet with a more recent effective date should:
Note that you will be required to satisfy all of the requirements of the new flowsheet, not just
those pertaining directly to the Computer Science major
Discuss the advisability of such a change with his or her academic advisor, and only then
fill out a form to change their flowsheet, stating the effective date of the desired flowsheet.
The form is available in the Registrar’s Office and in the Computer Science Department
office (MH 207)
Note that once a switch is made, it cannot be reversed. This means that it is very important to
understand all of the ramifications of changing your flowsheet before a switch is made.
Current and recent flowsheets can be found at
http://cs.salemstate.edu/dept/index.php?page=174.
Computer Science major Capstone Project information
☼ CSC 520 Computer Science Capstone Project Specification and CSC 521 Computer Science Capstone
Project should be thought of as a particularly strongly-integrated course sequence.
CSC 300 is the pre-requisite (not co-requisite) for CSC 520. Additional pre- or co-requisites
may be recommended based on the topic area proposed by the student.
In CSC 520 the student describes, in detail, what he/she will implement in CSC 521. CSC 520 is a
one-credit course during which the student selects a topic area for her/his required CSC 521
project and develops a formal proposal: the proposal describes in detail the objectives of the
project, the tools to be used, any benchmarks that must be achieved during the implementation of
the project, project deliverables, grading scheme, etc. CSC 520 does not involve implementing the
capstone project - it involves selecting and formalizing what the student's capstone project will be.
Once CSC 520 has been completed (that is, a passing grade has been received), the student enrolls
in CSC 521 and implements the proposal that was created in CSC 520. Any faculty member
supporting the Computer Science major may be approached to serve as the supervisor for the CSC
520 / CSC 521 sequence. Students should talk to potential supervisors early in the semester prior
to the semester in which they plan to actually register for CSC 520; ideally, students will begin
seriously considering potential projects no later than their junior year and talk to faculty during
the junior year. CSC 520 must be completed (that is, the project proposal must be complete and
approved) with a passing grade before CSC 521 can be registered for, therefore, CSC 520 and
CSC 521 may not be taken in the same semester.
Details regarding the objectives, goals, procedures, and requirements for the CSC 520 / CSC 521
sequence can be found at http://cs.salemstate.edu/dept/index.php?page=184 (use either the CSC
520 or CSC 521 link in the Attachments pane – both links reference the same content).
Page 17 of 20
CSC 520 and CSC 521 are available on a Directed Study basis every Fall and Spring semester.
Arrangements can sometimes be made to take these courses during the Summer, but only with
careful planning and the consent of the faculty member who is supervising the project - if you are
interested in either CSC 520 or CSC 521 during the summer, you must complete the process of
identifying a faculty supervisor and getting them to agree to work during the summer early in the
preceding Spring semester. CSC 520 and CSC 521 do not meet at formally scheduled times:
arrangements are made between the student and a faculty supervisor on a case-by-case basis.
Note the following:
A cs-majors listserv for Computer Science majors and minors may be subscribed to by going to
the following address while logged into the SSU network:
http://elists.salemstate.edu/mailman/listinfo/cs-majors
In the “Subscribing to cs-majors” pane fill in your full name (failure to fill in your full name
WILL result in your application being rejected) and email address (please use your SSU email
address), then select a password, and then click subscribe - that’s all there is to it. Listserv members
will receive notice of items of relevance to students in the Computer Science program: upcoming
advising / registration dates, notice of added and cancelled courses and changes in scheduled
courses, advising notes (including this notice, delivered to your computer’s front door at least twice
a year!), and notice of potential internships and employment opportunities.
It is the student’s responsibility to initiate contact with potential project supervisors, and
it is the student’s responsibility to complete the paperwork necessary to register for
CSC 520 and CSC 521.
A CSC 520 information session that will discuss capstone project requirements,
potential project topics, the relationship between CSC 520 and CSC 521, etc. will be
held on the second Monday of the semester, usually at 11:00 in MH 210. Attending
this meeting is required of all students who intend to register for CSC 520 during the
semester.
Registration for CSC 520 (and CSC 521) cannot be completed via Navigator –
registration requires a paper form (SSU's Directed Study form, available in the
Computer Science offer), to be completed early in the semester in which the course is
to be taken.
The Directed Study form must be completed and all signatures (student, project
supervisor, department chairperson) collected within two weeks of the CSC 520
information session (about four weeks into the semester).
o Failure to complete the registration process in a timely fashion will result in
registration not being authorized – given that the great majority of CS majors
take this two course sequence during their last two semesters at SSU, this
means that you'll postpose your graduation by at least one semester if you
miss the registration deadline.
Reminder: as indicated above, CSC 520 is a pre-requisite for CSC 521, therefore CSC
520 and CSC 521 cannot be taken in the same semester.
Page 18 of 20
Programming Club
The Programming Club welcomes everyone who has an interest in programming and/or programming
languages. Club members can benefit from club activities in two ways:
improve their programming skills by targeting challenging programming projects or topics in
preparation for participation in regional or national Programming Contests
deepen their understanding by providing assistance to others who are interested in programming
languages and/or problem solving but experience difficulty in applying concepts when it’s time to
solve problems and write code (as the old saying goes, “teaching others is the best way to learn”).
The Programming Club conducts bi-weekly meetings – a schedule of meetings is posted outside MH
209, and announcements of meeting time, location, and planned activities are posted to the cs-progclub
listserv (to subscribe to the club mailing list, visit and register at
http://elists.salemstate.edu/mailman/listinfo/cs-progclub while on campus). The date, time, and location of
the initial meeting is usually posted in the first two weeks of the semester. Please contact Prof. Beifang Yi
([email protected]) for additional information.
The Programming Club conducts a weekly meeting (usually the club meetings are on Thursdays
beginning at 5:00 pm in MH 209; notice of upcoming meetings will be announced through email to the
cs-majors list). For further information, please contact Prof. Beifang Yi at [email protected]
or http://cs.salemstate.edu/~byi/ or Prof. Sotirios Kentros at [email protected]
or http://cs.salemstate.edu/dept/index.php?page=296.
Robotics Club
The Robotics club welcomes all students with an interest in robotics, computer vision, or embedded
systems. Students in the club will work with ActivityBot, Raspberry Pi, and Finch robots. Students can
design, build, and translate their own ideas into robotic activities.
Robotics Club provides a fun learning environment for students to come together and study the field
of robotics. It helps them foster their critical thinking, team building, social, and leadership skills.
Club activities provide students with the opportunity to pursue their interest in robotics outside of the
classroom, to work on their capstone projects, to learn from other students, and to complete projects that
can be used to demonstrate their abilities when they are looking for a permanent job.
The Robotics Club conducts weekly meeting, usually on Tuesdays at 5:00 pm in MH 202. Please
contact Prof. Komalpreet Kaur ([email protected]) for additional information.
Page 19 of 20
Page 20 of 20
Undergraduate Academic Program Degree Map
A degree map (a semester-by-semester outline of the courses to be taken to complete the Computer Science
major can be found at
http://cs.salemstate.edu/dept/uploads/2_BSinComputerScienceDegreeMap2018Fall.pdf. Note that you are
not required to follow the sequencing exactly – this is an “idealized” path to completing degree
requirements – individual students will almost always deviate from it to some degree, and transfer students
who bring a significant number of credits with them will often need to make significant adjustments.
The main advantage of examining and understanding a degree map is to understand course sequencing
requirements. Each course in the degree map notes the course’s prerequisites (other courses that must be
taken in order to register for a course) – while many courses in a degree map can be moved around from
one semester to another with no impact, moving courses that are themselves prerequisites for future courses
can cause problems. For example, CSC 260 is usually taken fall semester of sophomore year. CSC 260 is a
prerequisite for CSC 300, which is usually taken spring semester of sophomore year and is only offered
during the spring semester. Therefore, if CSC 260 is delayed by a semester to spring sophomore year, CSC
300 cannot be taken until spring junior year, and that may in turn affect when you begin your required
Computer Science Capstone course sequence.
In general, try to follow the degree map; if you must or just wish to deviate from it, check with your
academic advisor to determine what, if any, consequences will occur.