程序代写案例-CS 214

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
CS 214 Systems Programming
Objective
The aim of CS214 is to introduce the student to the process of writing lower-level
programs that interact directly with a computer's operating system and hardware, as
well as to develop the student's ability to build large applications in a team
environment. Upon completion of this course, the successful student should be able
to design, write, test, and analyze moderately complicated programs using the C
programming language and UNIX/Linux operating systems.
Prerequisite Knowledge
• Structured programming in a high-level language (such as Java).
• Standard data structures (lists, trees, graphs, hash tables).
Textbook
The textbooks do not cover all material discussed in class, and are not a
substitute for attending lectures.
The following texts are available online, free of charge.
• C Programming
(Wikibook)
HTML or PDF.
• The C Book Mike Banahan, Declan Brady and Mark Doran
HTML or PDF.
For those of you not already familiar with the C language, here is a handy
reference card in PDF format.
The textbooks do not cover all material discussed in class, and are not a
substitute for attending lectures.
Topics Covered in CS214
The following list is organized by topic, not by chronological order of coverage in the
course.
0. Programming in C
• Basic syntax, standard I/O, data manipulation, flow control
• Pointer manipulation, dynamic memory management
• Error handling and debugging
1. Programming under UNIX
• Advanced debugging and error control coding
• File I/O
• Networking
• Signal handling
• Linux terminal commands
2. Large-scale development
• Modules, headers, linking, makefiles
• Version control
3. Concurrent programming
• Process creation and communication
• Multithreaded programming, synchronization
General Schedule of Topics
-=This schedule may change as needed=-
Intro to C, object files, linking and processes
C program structure, C functions, formatted I/O
Linux commands and services, Dynamic memory management
C preprocessor; Libraries (system-provided, static, dynamic) -- Bryant and
O'Halloran pp 681-683
C preprocessor; macros and definitions, makefiles
Multi-file projects, Library archives
File I/O, Directory I/O, File descriptor semantic, i-nodes
Multiprogramming -- Bryant and O'Halloran pp 718-736 (fork, exec)
Threads -- Bryant and O'Halloran pp 947-989
Thread synchronization (mutex locks, semaphores)
Thread synchronization (condition variables), thread patterns
Thread patterns (producer-consumer, etc)
Signals and event-based programming -- Bryant and O'Halloran pp 736-758
Signals and processes
Signals and threads
Networking; sockets, file descriptor semantic
Networking; concurrency, threading and client/server model
Basic Distributed Systems
-=This schedule may change as needed=-
Projects
WARNING: This is a project-heavy course. This course should give you more than a
passing knowledge of what writing working programs entails, but it will require
significant effort on your part. The projects will be a major undertaking. Assess your
commitment to this course realistically. If you don't have the time or the inclination to
work hard on the projects, you would be better off not taking the course, or taking it
later. You will have to learn how to build and debug reasonably-sized C programs and
make them robust to error and broken input. You will also have to describe your
program workings and parts of your development strategy in written documents.
Group work:
Due to the remote nature of this semester students are allowed to work in pairs. Both
members of a group must submit their group affiliation by the announced sign-up
deadline, or you are not working in a group and must each complete your own
version of the projects individually.
Due dates:
Due to the remote nature of this semester there will be a six-hour 'grace period' after
each project deadline during which a project may be submitted for 50% credit. If you
want to be sure to receive full credit, it is your responsibility to submit before the
deadline. Emergencies and unavoidable obligations must be reported to a SAS Dean
as soon as possible for review.
Code Submission:
Code must be submitted on Sakai before the due date. External files are not
considered. Time is as assessed on the Sakai host machine. Sakai is a web service; it
is not magic. Do not expect that you can press the 'submit' button one second before
the due date and have it work while 300 other people are doing the same thing. It is
best to submit your code at least 24 hours before the due date.
Testing:
Your code must compile and run correctly on the iLab machines specified or it will
receive a zero. If your code doesn't compile, it can not be evaluated and will receive a
zero. If your code can not be decompressed, it can not be evaluated and will receive a
zero. If your code requires compilation switches we do not use/allow or libraries or
external files we do not use/allow, it can not be evaluated and will receive a zero. Be
sure to test your submissions in a blank, fresh directory. If your submissions do not
decompress, compile or run, they do not work and will be given zeros.
Grading:
The programming part of the projects are typically graded on how well they operate,
how robust they are and how well they hold to the requirements. The written
portion(s) is(are) graded on exactness and completeness. You are not graded for time
spent, but how well your code functions. You can write an incredible massive tower
of code over a period of 300 hours, but if it breaks on a simple test you will have a
low score.
Communication
The instructional staff wants to help you, but due to the size of the course and
complexity of some issues, you need to be careful in your communication. If you
have a question about project details, first search Piazza and if your question is not
there, post. We will answer it as soon as possible. Emailing questions individually
causes the staff to spend much more time answering and repeating answers, giving
you lower-quality responses and delaying responses. If you still have a coding issue
or assignment question after posting on Piazza see your TA, preferably
synchronously. If you must email always prepend "[CS214]" to your subject and keep
it polite and precise. Include test data and your best idea about what is going on. If
you have a question your TA can not answer or a course policy question, then see
your Professor synchronously. Do not email the Professor except for scheduling,
course administration or in emergency circumstances.
Piazza is for posting precise, factual questions related to course content. It is not there
for you to complain. If you feel the need to complain to the Internet, take it
elsewhere. If Piazza is co-opted for use as a general social networking platform, it
will be disabled.
Working Together and Academic Honesty
Cheating on coursework and assessments will not be tolerated. We want to protect the
fairness and integrity of the class, so we run code similarity detectors on submitted
work and scrutinize exams. If an issue arises, both parties in the exchange are liable;
e.g. if you give away solutions to friends, you're putting yourself at risk too. Keep
your code safe and set your GitHub (or other online code control service) to be
private, if you use it. Making your code available to the universe is tantamount to
taping it to a public wall.
If you get caught, it's a nasty process that will result in at least a 0 on the assessment
in question and potentially your expulsion from Rutgers. You're better off asking for
help, or at worst, dropping the course and trying it again. The Office of Academic
Integrity's policy can be found at:
http://www.cs.rutgers.edu/policies/academicintegrity/.
You now need to click explicitly on a link when first login to our computing facilities,
use handin, etc., that says you acknowledge being aware of the policy (which you can
read through the login screen).
Grading
Homeworks: 25%
Final: 35%
Projects: 40%
Assessment grades are summed as weighted percentages at the end of the course.
Grades are not calculated per assessment. In general, the final mean is proximate to a
"C". In order to achieve pleasant outcomes, try to:
- be above the coursewide mean
- have >75% of the available points.
Academic Honesty and the Collaboration Line
Your classmates are a great resource, as is the Internet. You should talk to your
classmates about your work and look at the Internet. Obviously you shouldn't ever
copy code directly, give anyone code, or tell someone precisely why their code is
broken. What is the line between honest discussion and dishonest collaboration? The
more detailed the information you trade is, the less likely it is permissable. Keep it
general on the order of strategy and maybe design. If you help a fellow student with a
minor code issue, do not give them exact solutions but ask leading questions ("did
you check all the cases?", "are you 100% sure this line always works?").
If you are discussing a problem, strategy or code with a classmate, or if you looked
up a coding example or information online; first discard any notes or test code
written, do something entirely different or mind-numbing for half an hour, then
attempt to reproduce the solution on your own. This is to assure that the work is
original, your own, and that you fully understand how and why it works. It does you
no good to get too much help on the projects since if you do not learn the material
you will not do well on the exams.

欢迎咨询51作业君
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468