程序代写代做代考 Excel Haskell data structure SYRACUSE UNIVERSITY

SYRACUSE UNIVERSITY
L.C. SMITH COLLEGE OF ENGINEERING AND COMPUTER SCIENCE

CIS 252 – Introduction to Computer Science
Spring 2017

Catalog Description
Programming emphasizing recursion, data structures, and data abstraction. Elementary analysis of
and reasoning about programs. Public policy issues. Extensive programming. Three hours of lectures
and one hour of computer laboratory.

Instructor Information
Prof. Susan Older (sueo@ecs.syr.edu)
Office: CST 4-181, x4679
Office hours: 3-5pm on Mondays, 1:30-3pm on Fridays, or by appointment (I’m also easy to catch
after lectures)

TA Information
There will be two graduate TAs and several undergraduate TAs for this course who will be helping
out in the labs and possibly holding additional office hours. Information about office hours will be
posted on the course web site.

More than one of us will always be available during scheduled lab sections:
Wed 10:35am-11:30am
Wed 11:40am-12:35pm
Wed 12:45pm-1:40pm
Wed 2:15pm-3:10pm
Wed 3:45pm-4:40pm

These lab sections will be shared across all three lecture sections of CIS 252.

Course Web Address
http://www.cis.syr.edu/∼sueo/cis252

Textbook
• Simon Thompson. Haskell: The Craft of Functional Programming, Third Edition. Addison-

Wesley, 2011.

Course Objectives
As its name suggests, this course introduces many of the core concepts of computer science, as well
as touching on a few pieces of its history.

Broadly speaking, the practice of computer science is about data structures and supported operations
on them, languages and environments, and component-based problem solving. A computer scientist
must continually choose among alternatives: to do so successfully requires exposure to different op-
tions, knowledge of how to make wise choices, and experience. An important goal of this course is
to expand your view of the computing landscape by helping you explore and experiment with options
beyond what you’ve already seen.

http://www.cis.syr.edu/~sueo
http://www.cis.syr.edu/~sueo/cis252
http://www.haskellcraft.com/

We will be using the programming language Haskell for this course. Haskell is especially well suited
for the two main themes we want to emphasize: patterns and problem solving. Haskell supports
working with patterns in two ways. First, Haskell’s type system and extensive pattern-matching facil-
ity help a programmer write code that reflects the structure of the data it operates on. Second, using
higher-order functions helps programmers capture and re-use a variety of computational patterns in a
very succinct way. Haskell also supports a view of component-based design that is especially well-
suited for problem solving and for logical analysis. Finally, using Haskell will require you to come to
terms with recursion, a fundamental concept in computing. Consequently, you should begin to think
about programming in a different, more systematic and logical way, even as you move on to impera-
tive and object-oriented programming.

History suggests that you’ll be tempted to call this course “the Haskell course”. Our goal is that,
by the end of the semester, you can see below the surface of Haskell and recognize core concepts that
you will take with you to other courses and into your professional lives.

Prerequisites
There are no course prerequisites for this class. What you do need is the ability—or the willingness
to develop the ability—to think precisely and analytically when it comes to problem solving.

Course Outcomes
After completion of the course, you should be proficient enough with Unix, Emacs, Haskell, and the
program-design process that you can write, edit, execute, test, and debug moderate-sized programs. In
addition, you should have an understanding of the Unix shell as a programming language, of Emacs
as a useful program-development environment, and of Haskell as a convenient prototyping tool.

Unix and Emacs
• Use the Unix command line and other features to perform basic tasks

– Managing files and directories
– Checking and changing file permissions
– Writing one-line programs using basic pipes and filters

• Use Emacs as a program-development environment
Program Design & Development

• Use a program-design recipe to develop code that is correct, coherent, and well documented.
• When given a specification of a program, construct concrete examples that satisfy that spec-

ification.
• When given a problem specification, recognize, comprehend and apply the concepts of

pattern matching, recursion, and higher-order functions when designing your programs.

Haskell Fundamentals
• When given a Haskell expression, determine whether or not it is well-typed, and either give

its type or explain why it is ill-typed.
• When given a Haskell type expression, give some Haskell expressions or values of that type.
• Use higher-order functions to map, filter, and fold operations across recursively defined data

(e.g., lists).
• Use Haskell patterns to write data-directed programs.
• Define Haskell algebraic types to represent abstract types, and write Haskell programs that

operate over those types.

• When given a moderate-sized Haskell program and relevant input, calculate the result of
that program.

• When given an informal but fairly precise English description, write a Haskell program that
accurately captures the desired behavior.

Other Computer Science Concepts
• When given a Turing machine description and a specific input string, be able to calculate

the resulting output string.
• When given an English description of a problem, write a Turing machine that accurately

captures the desired behavior.

Outcome Measurement
Your final grade will be based on a variety of activities:

• Pop Quizzes and In-class Activities (6% of final grade)
On occasion I may give an unannounced, brief quiz or an in-class activity. These quizzes and
activities will be graded on the following scale:

Points Meaning
3 Substantially correct
2 Partially correct
1 Primarily incorrect or no answer
0 No quiz submitted (i.e., absence)

These activities are intended to provide both you and me with more timely feedback on the
class’s understanding of key concepts. My policy is to excuse only those absences for which
I’ve received advance notification.

• Labs (10% of final grade)
Labs provide you an opportunity to try out course concepts with us in the room to help out.
There will be a lab assignment approximately every week: I will drop the lowest lab grade at the
end of the semester. Each week’s lab will be made publicly available off the course web page no
later than Tuesday afternoon. Your solutions are due by noon that Friday, regardless of which
lab section you are in.

• Homework assignments (24% of final grade)
Homework assignments provide you extended and more in-depth opportunities to get practice
with the entire program-design process. There will be a homework assignment approximately
every week: I will drop the lowest homework grade at the end of the semester.

Homeworks assignments can be turned in at class or placed in the marked bin in the hallway
near CST 4-226; you will need to complete, sign, and attach a disclosure cover sheet with each
assignment.

• Exams (60% of final grade)
Exams allow you to demonstrate your understanding and mastery of the course concepts. There
will be three in-class exams during the semester. There will also be a two-hour optional final
exam: the exam portion of your final grade will be the greater of (1) your cumulative average of
the in-class exams, and (2) your score on the final exam.

You should also be aware of the following submission practice and policy (even more details will
appear on the course web page):

http://www.cis.syr.edu/courses/cis252/coursework/cover.pdf

On some homework and lab assignments, you may work singly or in pairs; on other assign-
ments, you must work alone. You may work only with students in this section of CIS
252: you should not be submitting joint work with students in Prof. Lee’s sections.
If you work with someone else, you should submit a single solution: each person’s name
must appear clearly on the first page. All members of a group will receive the same grade;
groups of more than two will receive no credit.

Labs and homework assignments should be placed in the marked bin near CST 4-226. As-
signments are due by the date and time specified on them: No late assignments will be
accepted.

All grades are recorded in the Blackboard system. I encourage you to check them frequently, and
let me know if you find any discrepancies. The scale for converting your numeric overall grade
(calculated as stated above) to a course letter grade will be no more restrictive (see exception below)
than the following:

A numeric score results in a course grade
of at least of at least

94.0 A
90.0 A-
85.0 B+
80.0 B
75.0 B-
70.0 C+
65.0 C
60.0 C-
50.0 D
0.0 F

Important exception: This scale applies only to students whose exam grade is at least 50%. If
your exam grade is less than 50%, I reserve the right to give a D or F.

Course Topics
Unix basics: basic shell commands and tools, man pages, pipes, filters. The program-design recipe.
Haskell basics. Higher-order functions and currying. Types, including tuples, lists, functions, and
algebraic data types. Simple type checking and type inference. Polymorphism and overloading. Data
and type abstraction. Historical context for various Computer Science concepts.

Other Information
Academic Integrity

Syracuse Universitys Academic Integrity Policy reflects the high value that we, as a university
community, place on honesty in academic work. The policy defines our expectations for aca-
demic honesty and holds students accountable for the integrity of all work they submit. Students
should understand that it is their responsibility to learn about course-specific expectations, as
well as about university-wide academic integrity expectations. The policy governs appropriate
citation and use of sources, the integrity of work submitted in exams and assignments, and the
veracity of signatures on attendance sheets and other verification of participation in class ac-
tivities. The policy also prohibits students from submitting the same work in more than one

class without receiving written authorization in advance from both instructors. Under the policy,
students found in violation are subject to grade sanctions determined by the course instructor
and non-grade sanctions determined by the School or College where the course is offered as
described in the Violation and Sanction Classification Rubric. SU students are required to read
an online summary of the Universitys academic integrity expectations and provide an electronic
signature agreeing to abide by them twice a year during pre-term check-in on MySlice. For more
information about the policy, see http://academicintegrity.syr.edu.

My expectations for this course are the same as those enumerated in the University’s policy:
you should (1) credit your sources, (2) do your own work, (3) communicate honestly, and (4)
support academic integrity. Every student must read and sign a copy of the course Honor Policy,
which elaborates on how academity integrity applies to this course. Students will receive zeroes
on all coursework until this sheet is turned in.

The Violation and Sanction Classification Rubric establishes recommended guidelines for the
determination of grade penalties by faculty and instructors, while also giving them discretion to
select the grade penalty they believe most suitable, including course failure, regardless of viola-
tion level. Any established violation in this course may result in course failure, regardless of the
violation level.

I highly recommend the following (inexpensive!) book to help you successfully navigate the
academic-integrity waters during your collegiate career:

Charles Lipson, Doing Honest Work in College: How to Prepare Citations, Avoid
Plagiarism, and Achieve Real Academic Success, Second Edition, The University of
Chicago Press, Chicago, Illinois, 2008.

This book introduces the three basic tenets of academic honesty, and also provides excellent
suggestions for studying for exams, working in groups, writing research papers, and other tasks
you’ll encounter as a college student.

Accommodations
Our community values diversity and seeks to promote meaningful access to educational op-
portunities for all students. Syracuse University and I are committed to your success and to
supporting Section 504 of the Rehabilitation Act of 1973 as amended and the Americans with
Disabilities Act (1990). This means that in general no individual who is otherwise qualified shall
be excluded from participation in, be denied benefits of, or be subjected to discrimination under
any program or activity, solely by reason of having a disability.

If you believe that you need accommodations for a disability, please contact the Office of
Disability Services (ODS), http://disabilityservices.syr.edu, located at 804 University Avenue,
Room 309, or call 315-443-4498 for an appointment to discuss your needs and the process for
requesting accommodations. ODS is responsible for coordinating disability-related accommo-
dations and will issue students with documented disabilities “Accommodation Authorization
Letters,” as appropriate. Because accommodations may require early planning and generally are
not provided retroactively, please contact ODS as soon as possible.

Attendance
I expect all students to attend lectures. If you are unable to attend a lecture for some reason,
then please send me email before that lecture begins: I will generally excuse a missed quiz or

http://academicintegrity.syr.edu
http://www.cis.syr.edu/~sueo/cis252/writeups/honor.pdf
http://disabilityservices.syr.edu

participation grade if I receive prior notice of your absence.

Computers and Other Electronic Devices
I recognize that a small number of students like to use a computer to take notes in class. However,
computers and other electronic devices also frequently become distractions, either to their owner
or to others in the classroom. I ask that you put away your computer/phone/tablet/etc during
lecture, unless you are using the device to take notes. If I find that these devices are becoming a
distraction to you or others, I may require you to put them away.

Religious Observances SU’s religious observances policy, found at

http://supolicies.syr.edu/emp ben/religious observance.htm,

recognizes the diversity of faiths represented among the campus community and protects the
rights of students, faculty, and staff to observe religious holy days according to their tradition.
Under the policy, students are provided an opportunity to make up any examination, study, or
work requirements that may be missed due to a religious observance provided they notify their
instructors before the end of the second week of classes. For fall and spring semesters, an
online notification process is available through MySlice/Student Services/Enrollment/My Reli-
gious Observances from the first day of class until the end of the second week of class.

http://supolicies.syr.edu/emp_ben/religious_observance.htm

Catalog Description
Instructor Information
Course Objectives
Prerequisites
Course Outcomes
Outcome Measurement
Academic Integrity