These are the courses I typically teach.
Update: March 25, 2013
In Summer 2013 I will be offering CSC 260 – Software Engineering in the blended learning format. Students who want to accelerate or catch up on their core CS requirements are particularly encouraged to take this course during the summer. Collaborate with your peers, and draw on your knowledge in computer science and other areas, to design innovative software solutions to tackle real-world problems!
Expanded Course Description: In this course, students will build a strong foundation in software engineering and advanced object-oriented concepts. They will work collaboratively with their peers and integrate concepts from computer science and other disciplines to address complex, real-world problems through innovative software solutions. Students will be able to apply the knowledge, experience and skills developed here to courses that follow in the curriculum sequence. An important outcome is that students will be better prepared to face the challenges of the computing profession where rapid advances demand an ability to adapt quickly and efficiently to new languages, tools and technologies. Students will gain a deeper understanding of concepts through a variety of activities. The weekly face-to-face meetings will be leveraged for hands-on group work on short exercises, brainstorming and the semester-long collaborative project. This time will also be used for classroom discussions and presentations. Online technologies, like Skype, Google Hangout, and Canvas will be utilized for instruction, individual work and some forms of assessment.
Draft Syllabus: Summer 2013 CSC260 Syllabus.
Course resources are made available via the course wiki accessible only to enrolled students. Updates are available via email and through the course wiki. Grades are posted on SOCS and final grades via PAWS. Collaborative projects are managed through GitHub. Starting Summer 2013 course management will be through Canvas.
CSC 498/499 – Mentored Research
Projects vary. See the Research page for currents projects.
CSC 260 – Software Engineering
Course Wiki: tcnjcsc340.pbworks.com (accessible only by students enrolled in the class for the current semester)
Software products play a central role in almost every aspect of life today, helping people to be more effective and productive in the pursuit of their daily tasks. Billions of dollars are spent on software application development yet there are serious problems in the cost, timeliness, security, and quality of many software products. Software engineering aims to integrate the principles of computer science and other disciplines to develop systematic models and reliable techniques for producing high-quality software. This course introduces students to software engineering with an emphasis on the Unified Process (UP) for problem solving and software application development. Advanced object-oriented and implementation concepts are introduced through the C++ programming language.
CSC 315 – Database Systems
Every alternate year, typically in the fall semester of odd years.
Course Wiki: tcnjcsc315.pbworks.com (accessible only by students enrolled in the class for the current semester)
The importance of database systems has increased dramatically in the last two decades. Databases are crucial to efficient management of data whether in commercial organizations, educational institutions, or non-profit enterprises. They play a central role in almost every aspect of life today, helping people to be more effective and productive in the pursuit of their daily tasks. This course introduces students to the fundamental concepts necessary for designing, using, and implementing database systems and applications. A DBMS like Oracle or PostgreSQL is utilized to underscore concepts learned in class. This course stresses the fundamentals of database modeling and design, the language and facilities provided by database management systems, and system implementation techniques. The Unified Process (UP) is followed for database system development. The Unified Modeling Language (UML) is used to describe each stage of application development, particularly analysis and design. The major topics to be covered include Database Analysis and Design Techniques, the Relational Model and Languages, Methodology, Security, Transaction Management, and Introduction to Distributed DBMSs and Replication.
CSC 470 – Topics in Computer Science: Social Computational Systems
There are many scientific problems that computers cannot yet solve despite their ability to handle large computations and data sets. This course investigates the emerging and growing field of social computational systems that enable and support computations carried out by groups of people, leveraging abilities that computers do not yet have but that are innate to humans, such as intuition, superior visual processing, and an understanding of the real world. Students will consider what types of problems are amenable to crowdsourcing approaches and how the “wisdom of crowds” effect can be utilized to accomplish tasks that are easy for human beings but difficult for computers in order to solve large computational problems. They will gain hands-on experience in open source development as they design and implement a module of such a system.
Social computing has fundamentally changed how people obtain and share information, and perform a variety of tasks. Recent trends including the growing popularity of social software and Web 2.0, increased interest in social network analysis, the rise of open source as a viable method of production, and a growing conviction that all of this can have a profound impact on daily life, are propelling the use of “human computation” and “crowdsourcing” to solve large computational problems. “Crowdsourcing” is increasingly being used to leverage the collective intelligence of large numbers of people, a “crowd” or a community, to solve problems or gather data. It is particularly useful for combining the efforts of crowds to accomplish tasks that are easy for human beings but difficult for computers. For example, Amazon’s Mechanical Turk is an online marketplace for work that requires human intelligence but that is time consuming, expensive, and difficult to scale. Luis von Ahn’s “games with a purpose” get large numbers of computer users to cooperate online, for example to help digitize old library books by typing out difficult-to-read words from scanned books. The field of social computational systems draws on theoretical underpinnings in diverse areas of computer science and social sciences. For example, facilitating social interaction and communication requires applying research in communication, human computer interaction, sociology, psychology, economics, and anthropological studies, while the technological infrastructure is based on theory in artificial intelligence, database systems, multimedia, software engineering, web design and networking.
CSC 215-03 – CS I For Science/Engineering
Spring 2011 semester
Course Wiki: tcnjcsc215.pbworks.com
A first course in computer science for science, mathematics, and engineering science majors. Emphasis is on using computational methods to solve scientific problems. The programming languages C/C++ or Fortran will be used to teach structured programming and algorithm development. Topics include control structures, data typing including structures and arrays, parameterized procedures, and recursion as well as simple I/O control. This course may not be taken by computer science majors without permission of the department, and then only for free elective credit.
FSP – In Pursuit of Innovation
Fall 2010 semester and occasionally
Course Wiki: tcnjipoi.pbworks.com
A current buzzword is ‘innovation’. What does this mean and how does one do it? Technology has revolutionized the landscape, changing where and how innovation happens and who is considered an innovator. This course will examine the emergence of new business models, such as for dissemination of news, fund raising and shopping, that are being triggered by Twitter, Facebook, Netﬂix, Amazon, etc., and the ‘Google model’ of innovation that is blazing trails in a number of areas. In this context, we will also consider the challenges of maintaining privacy and security of information.