Ganttproject lets you create project schedules using Gantt charts and resource load charts. With GanttProject, you can break down your project into a tree of tasks and assign resources that have to work on each task. You can also create dependencies between tasks (this task must be completed before this task can start) and thus generate a schedule showing the expected timeline of the project.
Gantt project supports reports in PDF and HTML and can exchange data with MS Project. For more information about project scheduling, see the Wikipedia article on Gantt charts and this article about project scheduling. See also an Introduction to GanttProject video on YouTube.
Ganttproject requires Java for Windows to be installed.