Courses

  • CSCI-140C P2Computer/Internet Ethics (3)

    This course will cover a wide variety of issues of ethics in the areas of technology, Internet, and computers in society. Among these will be information privacy, codes of ethical behavior, the cost of not doing the job right, the use and misuse of creativity, and more.

    Attributes: P2 YLIB
  • CSCI-152 Intr Prog Visual BASIC (3)

    This course uses Visual BASIC to introduce the beginning programmer to problem-solving in a computer language. Topics covered are: events, I/O, numbers, strings, use of functions and procedures, relational and logical operators, IF statements, repetition (DO loops, FOR NEXT loops), arrays, sequential files, and Visual BASIC controls.

    Attributes: NLIB
  • CSCI-158 P4 Int Computational Media (3)

    Students will explore the creative possibilities of code and gain a working knowledge of variables, conditionals, loops, functions and objects as they learn the fundamentals of procedural thought. In different semesters, this course may focus on the design and creation of computer graphics, mobile apps, computational objects, or web applications. No previous programming experience assumed. Cross listed with DIGC 158. Formerly titled P4 Intro to Media Computing.

    Attributes: P4 YLIB
    Restrictions: Excluding: -Class: Senior
  • CSCI-161 Found of Comp Sci I (3)

    This course is an introduction to the problem-solving and programming methodologies that are fundamental to the study of computer science. Problem-solving follows procedural paradigms. An appropriate programming language is used to support these paradigms and facilitates an introduction to the concept of classes and objects. Students gain considerable experience with fundamental language constructs and types (classes), such as expressions, decisions, iteration, functions, structures, and strings.

    Attributes: NLIB
    Pre-requisites: MATH-150C Y C
  • CSCI-162 Found of Comp Sci II (3)

    In this course, there is a further emphasis on object-oriented design and data abstraction as problem-solving strategies. The object-oriented paradigm is a primary focus, and the course also covers topics such as Exception Handling and File Input/Output.

    Attributes: NLIB
    Pre-requisites: CSCI-161 D- AND (MATH-120C Y D- OR MATH-150C Y D-)
  • CSCI-231 Data Structures&Algorithms (3)

    This course covers a variety of algorithms and their analyses, using some of the mathematical tools. Complex linked structures such as B-trees, tries, graphs, hashing, searching, and sorting are implemented and analyzed.

    Attributes: NLIB
    Pre-requisites: CSCI-161 C
  • CSCI-241 Computer Architecture (3)

    This course provides an in-depth study of the interface between hardware and software including the history of computing technology and modern architectures. This course also gives an understanding of how computers are organized, including performance issues, processor design, pipelining, memory hierarchies, peripheral interfacing, and multiprocessing.

    Attributes: NLIB
    Pre-requisites: CSCI-161 Y C
  • CSCI-251 Intro to Computer Security (3)

    In this course, students will learn the fundamentals of computer security. Topics to be covered include: authentication, cryptography, steganography, methods of digital eavesdropping, wireless security, access control, exploits, denial of service attacks, intrusion detection and prevention, social engineering, and security policies.

    Attributes: YLIB
    Pre-requisites: CSCI-152 C OR CSCI-161 C
  • CSCI-260 Int Databases&Applications (3)

    This course presents an overview of database organization and management. Topics include database organization, querying techniques with SQL, data extraction and manipulation, and application development and design. Students work with databases in multiple environments, including PCs, networks, and the WWW, and design and develop database applications using Microsoft Access and MySQL and PHP. Previous web/programming experience recommended.

    Attributes: YLIB
    Pre-requisites: CSCI-150 C OR CSCI-155 C
  • CSCI-290 Theory of Computation (3)

    An elementary treatment of abstract computer modeling, including such topics as finite automata, languages, regular expressions, context-free grammars, and Turing machines.

    Attributes: YLIB
    Pre-requisites: MATH-150C C OR MATH-200C C
  • CSCI-300 Networking (3)

    This course provides a fundamental understanding of networks as communication systems. Emphasis is placed on computer networks and how computer networks and distributed computing are used to solve customer problems. Throughout the course, students explore the telecommunications and networking industry, as well as the basic concepts inherent to the application of data communications and computer networks in a digital age.

    Attributes: NLIB
    Pre-requisites: CSCI-150 C
  • CSCI-303 C Module (1)

    This course is a rapid but thorough study of the syntax of C. Aimed at the Computer Science major, this course provides the experienced programmer with a working knowledge of this popular high-level language, widely used in systems programming.

    Attributes: NLIB
    Pre-requisites: CSCI-162 C
  • CSCI-304 Visual BASIC Module (1)

    This course is a rapid but thorough study of the syntax and features of Visual BASIC from an advanced standpoint. Aimed at the Computer Science major, this course provides the experienced programmer with a working knowledge of this important high-level language.

    Attributes: NLIB
    Pre-requisites: CSCI-162 C
  • CSCI-307 Python Module (1)

    This course is a rapid but thorough study of the syntax and features of the Python programming language from an advanced standpoint. Aimed at the Computer Science major, this course provides the experienced programmer with a working knowledge of this important high-level language.

    Attributes: NLIB
    Pre-requisites: CSCI-162 D-
  • CSCI-342 Operating Systems (3)

    This course explores operating systems concepts and concurrent programming using Java. Discussed are multithreaded programming, synchronization, classic synchronization problems and their solutions, and distributed programming.

    Attributes: YLIB
    Pre-requisites: CSCI-231 C AND CSCI-241 C
  • CSCI-351 Secure Software Dev (3)

    Students learn advanced techniques in secure software development. This course covers classification of secure software development within different techniques for protecting software from exploitation. The material focuses on a set of software problems, including overflows, access control, rate conditions, and input validation, and examines the reasons for their introduction with respect to the software development process, as well as the techniques and methods that can be used to avoid the introduction of such security problems. Operating systems concepts and concurrent programming using Java are also explored. Discussed are multithreaded programming, synchronization, classic synchronization problems and their solutions, and distributed programming.

    Attributes: YLIB
    Pre-requisites: CSCI-231 C AND CSCI-251 C AND CSCI-303 C
  • CSCI-353 Database Structures (3)

    This course focuses on the internal, conceptual, and external views of modern database structures. The relational model is studied with specific attention to the theory and application of various query languages including Oracle SQL, QBE, and Ingres, and the usage of these languages to consider data. Additional topics include: data integrity, relational algebra, relational calculus, object-oriented databases, security issues, and concurrency issues.

    Attributes: NLIB
    Pre-requisites: CSCI-162 C
  • CSCI-355 Mobile Computing (3)

    Mobile computing (also known as ubiquitous computing) and devices such as the iPhone, iPad, and tablet have changed the way we look at computing. This course will cover basic mobile development concepts that apply to multiple platforms. Topics include: an introduction to user interface design, database connectivity, mobile web sites, and network communications. The course includes a project that requires the student to design and develop a mobile app of their choosing for both iOS and Android operating systems.

    Attributes: YLIB
    Pre-requisites: CSCI-231 C
  • CSCI-365 Computer Graphics (3)

    This course is an introduction to graphics hardware and software. Topics include vector and raster graphics, viewing and window coordinates, segmenting, two-dimensional and three-dimensional transformations, clipping, hidden surface algorithms, and graphics packages and systems.

    Attributes: NLIB
    Pre-requisites: CSCI-162 C
  • CSCI-375 Programming the WWW (3)

    This course focuses on the WWW and the various languages and technologies used to provide interactivity and dynamic content to web pages. The paradigm of programming within a web page is explored, as it is distinct from more traditional types of programming. Markup languages (HTML, XHTML, XML) and scripting languages (JavaScript, PHP, Perl) are studied. Additional topics include: client/server databases, multimedia (Flash), browser and web server technologies. Students build and maintain a web site and complete several programming projects using available technologies.

    Attributes: NLIB
    Pre-requisites: CSCI-162 C
  • CSCI-385 Data Mining (3)

    Data mining is concerned with the extraction of novel knowledge from large amounts of data and supports decision making by detecting patterns, devising rules, identifying new decision alternatives and making predictions. Topics include: data warehousing and data cleaning, data preparation and variable selection, clustering, classification, association rules, text indexing and searching algorithms, decision trees, neural networks and techniques for mining text. Data visualization techniques will be used whenever possible to reveal patterns and relationships. Students will use a variety of tools and techniques to mine large databases.

    Attributes: YLIB
    Pre-requisites: CSCI-353 OR CSCI-260
  • CSCI-395 Artificial Intell (3)

    Fundamental concepts used in computer implementation of processes, which imitate human cognition are studied. Topics include knowledge representation, logical deduction and problem-solving, natural language understanding, knowledge bases, and expert systems. Students complete several programming projects.

    Attributes: YLIB
    Pre-requisites: CSCI-231 C
  • CSCI-400 Special Topics (3)

    This course presents a special topic that would not regularly be offered, such as compiler construction. May be taken only once. Fall2014 Topic: Mobile Computing This three-hour course introduces application development for mobile computing devices such as the iPhone, iPad or Android. Students learn basic mobile development concepts that apply to multiple platforms. Topics include: an introduction to user interface design, database connectivity, mobile web sites, and network communications. The course includes a project that requires the student to create a small mobile app of their choosing for both iOS and Android.

    Attributes: YLIB
    Restrictions: Including: -Major: Applied Information Technology, Computer Science -Class: Junior, Senior
  • CSCI-451 Applied Security Technique (3)

    Students learn advanced concepts of computer attacks and defenses in an intensive, hands-on setting. Students learn the details of various exploits, including buffer overruns and format string attacks. Other specific attack techniques, such as Man-In-The-Middle, Denial of Services, Worms, Viruses, and Trojan Horses are examined. Students then learn to craft defenses to these attacks from both a host-based and network-based point of view.

    Attributes: YLIB
    Pre-requisites: CSCI-231 C AND CSCI-251 C AND CSCI-303 C
  • CSCI-452 Database Applications (3)

    Relational database design and implementation are studied within the context of the Oracle database management system. Students design and implement a menu-driven application using Oracle and PL/SQL. Topics include: database and application design principles, including data normalization, data integrity, entity-attribute-relationship methodology, UML, and human-computer interactions.

    Attributes: NLIB
    Pre-requisites: CSCI-353 C
  • CSCI-461 Progrmng Language Concepts (3)

    This course is a study of the general principles of programming language design and implementation. Central concepts of syntax, semantic structures, and run-time representations are discussed. Several programming languages are studied to compare and contrast their design, rather than to master one particular language.

    Attributes: YLIB
    Pre-requisites: CSCI-231 C AND CSCI-290 C AND CSCI-303 C AND CSCI-304 C AND CSCI-307 C
  • CSCI-470 Computer Network&Internet (3)

    This course discusses the basic paradigms and technologies of data communications, computer networks, and the Internet. Data transmission techniques, communication codes and protocols, and data communication hardware are discussed. Networking topics include: topologies in LANs and WANs, interconnection hardware, addressing and routing techniques, and wireless networks protocols.

    Attributes: YLIB
    Pre-requisites: CSCI-241 C
  • CSCI-475 Software Engineering (3)

    The course covers topics in the development of software systems, including software life models, requirements definition, design, verification and validation, and project management techniques. Each student then applies this knowledge in an individual software design project.

    Attributes: YLIB
    Restrictions: Including: -Major: Computer Science -Class: Senior
  • CSCI-480 Senior Project (3)

    This course involves the application of formal design technique to the development of a large software project performed by students working in teams. Each team produces a non-trivial software system, discusses the project and implementation options with a client, presents their accomplishments and progress, as well as documents the product and its development process throughout the semester.

    Attributes: NLIB
    Restrictions: Including: -Major: Computer Science -Class: Senior
  • CSCI-490 Internship (3)

    The student accepted into this course spends 10 to 15 hours per week as an intern with an organization in the Rochester area. The student performs tasks assigned by the supervisor in the organization with the goal of participating meaningfully in real-world computer applications or research. Completion of at least one upper-level CSCI course and a minimum GPA of 3.00 or higher is recommended before registering for this course. Permission of the internship coordinator is required to register.

    Attributes: NLIB
    Restrictions: Including: -Major: Applied Information Technology, Computer Science -Class: Junior, Senior
  • CSCI-496 Independent Study (1 TO 3)

    Well-qualified seniors may initiate and carry out a proposal for independent, advanced work under the supervision of a member of the department. Completion of the Independent Study/Tutorial Authorization is required.

    Attributes: YLIB
    Restrictions: Including: -Major: Computer Science, Computer Science, Computer Science, Computer Science -Class: Senior

Computer Science


For More Information

Kris Green
Department Chair
kgreen@sjfc.edu
(585) 385-7367

Admissions
(585) 385-8064
admissions@sjfc.edu